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