通常,重复值在第一次出现后被考虑,但第一次出现的值也是其余值的重复。因此,我们可能也想排除它。
借助带有否定运算符的重复函数,可以轻松完成 R 数据框列中非重复值的子集化,如下面的示例所示。
以下代码段创建了一个示例数据框 -
x<-rpois(20,10) df1<-data.frame(x) df1
创建了以下数据框
x 1 16 2 5 3 17 4 7 5 6 6 7 7 14 8 10 9 7 10 13 11 11 12 15 13 4 14 10 15 16 16 11 17 10 18 11 19 9 20 11
要对 x 中的非重复值进行子集化并排除上面创建的数据框中的第一个重复项,请将以下代码添加到上面的代码段中 -
x<-rpois(20,10) df1<-data.frame(x) df1$x[!(duplicated(df1$x)|duplicated(df1$x,fromLast=TRUE))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
[1] 5 17 6 14 13 15 4 9
以下代码段创建了一个示例数据框 -
y<-sample(1:10,20,replace=TRUE) df2<-data.frame(y) df2
创建了以下数据框
y 1 8 2 10 3 1 4 5 5 5 6 2 7 1 8 2 9 6 10 7 11 10 12 5 13 7 14 4 15 2 16 1 17 6 18 5 19 10 20 7
要从 y 中提取非重复值并排除上面创建的数据框中的第一个重复值,请将以下代码添加到上面的代码段中 -
y<-sample(1:10,20,replace=TRUE) df2<-data.frame(y) df2 df2$y[!(duplicated(df2$y)|duplicated(df2$y,fromLast=TRUE))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
[1] 8 4
以下代码段创建了一个示例数据框 -
z<-sample(501:510,20,replace=TRUE) df3<-data.frame(z) df3
创建了以下数据框
z 1 509 2 507 3 504 4 508 5 502 6 510 7 508 8 506 9 503 10 508 11 507 12 508 13 502 14 508 15 506 16 510 17 505 18 510 19 510 20 505
要从 y 中提取非重复值并排除上面创建的数据框中的第一个重复值,请将以下代码添加到上面的代码段中 -
z<-sample(501:510,20,replace=TRUE) df3<-data.frame(z) df3$z[!(duplicated(df3$z)|duplicated(df3$z,fromLast=TRUE))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -
[1] 509 504 503