如何在 R 数据框列中提取不重复的值?


通常,重复值是在第一次出现后才被考虑,但值的第一次出现也是其余重复值的副本。因此,我们可能也希望将其排除。

借助 `duplicated` 函数和否定运算符,可以轻松地从 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

更新于:2021年11月1日

1K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告