isDuplicated
语法
isDuplicated(X, [keep=FIRST])
参数
X 是一个向量或包含多个等长向量的元组。
keep 是一个常量,表示系统处理多个重复值的方式。它的取值可以是FIRST、LAST或NONE。它是一个可选参数,默认值为FIRST。
详情
判断向量中是否包含重复值。如果 input 是一个向量,返回的结果是一个与 input 长度相同的布尔向量。如果 input 是一个元组,返回的结果是一个与 input 中每个元素等长的布尔向量。
如果输入向量中有多个重复值,
keep的取值为FIRST表示,返回结果中第一个重复值对应位置的值为false,其他重复值对应位置的值为true。
keep的取值为LAST表示,返回结果中最后一个重复值对应位置的值为false,其他重复值对应位置的值为true。
keep的取值为NONE表示,返回结果中所有重复值对应位置的值都为true。
例子
下面通过一个例子说明keep参数不同取值的区别。
$ v = [1,3,1,-6,NULL,2,NULL,1]
$ isDuplicated(v,FIRST);
[0,0,1,0,0,0,1,1]
// 1在向量v中出现了三次,所在的位置是第0、第2和第7位,由于isDuplicated的第二个参数为FIRST,因此返回结果中第0位为false,第2和第7位为true。
$ v = [1,3,1,-6,NULL,2,NULL,1]
$ isDuplicated(v,LAST);
[1,0,1,0,1,0,0,0]
// 1在向量v中出现了三次,所在的位置是第0、第2和第7位,由于isDuplicated的第二个参数为LAST,因此返回结果中第7位为false,第0和第1位为true。
$ v = [1,3,1,-6,NULL,2,NULL,1]
$ isDuplicated(v,NONE);
[1,0,1,0,1,0,1,1]
// 1在向量v中出现了三次,所在的位置是第0、第2和第7位,由于isDuplicated的第二个参数为NONE,因此返回结果中第0、第1位和第7位都为true。
isDuplicated 函数可以去除表中的重复记录。
$ t=table(1 2 4 8 4 2 7 1 as id, 10 20 40 80 40 20 70 10 as val);
$ t;
id |
val |
---|---|
1 |
10 |
2 |
20 |
4 |
40 |
8 |
80 |
4 |
40 |
2 |
20 |
7 |
70 |
1 |
10 |
$ select * from t where isDuplicated([id,val],FIRST)=false;
//保留第一条重复的记录,去除表中其他重复的记录
id |
val |
---|---|
1 |
10 |
2 |
20 |
4 |
40 |
8 |
80 |
7 |
70 |