如何从 R 数据框列中对非重复值进行子集化?

通常,重复值在第一次出现后被考虑,但第一次出现的值也是其余值的重复。因此,我们可能也想排除它。

借助带有否定运算符的重复函数,可以轻松完成 R 数据框列中非重复值的子集化,如下面的示例所示。

示例 1

以下代码段创建了一个示例数据框 -

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

示例 2

以下代码段创建了一个示例数据框 -

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

示例 3

以下代码段创建了一个示例数据框 -

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