如何在R数据框中查找唯一行?


R数据框中的一行唯一是指该行中的所有元素在整个数据框中没有相同的组合重复出现。简单来说,如果我们有一个名为df的数据框,包含3列和5行,那么特定行中的所有值在任何其他行中都不会重复。当我们的数据集中有很多重复行时,可能需要搜索这种类型的行。为此,我们可以使用dplyr包的group_by_all函数,如下例所示。

示例1

考虑下面的数据框:

在线演示

> x1<-rpois(20,1)
> x2<-rpois(20,1)
> x3<-rpois(20,1)
> df1<-data.frame(x1,x2,x3)
> df1

输出

   x1 x2 x3
1  1  0  2
2  2  1  2
3  1  0  1
4  0  1  0
5  0  0  1
6  1  1  1
7  0  0  0
8  0  1  1
9  0  0  0
10 1  0  1
11 2  2  2
12 1  2  1
13 2  0  2
14 0  1  0
15 0  1  1
16 1  0  1
17 0  0  2
18 1  1  1
19 4  2  0
20 2  2  0

加载dplyr包并在df1中查找唯一行:

> library(dplyr)
> df1%>%group_by_all%>%count
# A tibble: 14 x 4
# Groups: x1, x2, x3 [14]

输出

    x1    x2    x3    n
  <int> <int> <int> <int>
1   0     0     0     2
2   0     0     1     1
3   0     0     2     1
4   0     1     0     2
5   0     1     1     2
6   1     0     1     3
7   1     0     2     1
8   1     1     1     2
9   1     2     1     1
10  2     0     2     1
11  2     1     2     1
12  2     2     0     1
13  2     2     2     1
14  4     2     0     1

示例2

在线演示

> y1<-sample(c("Yes","No"),20,replace=TRUE)
> y2<-sample(c("Yes","No"),20,replace=TRUE)
> df2<-data.frame(y1,y2)
> df2

输出

  y1   y2
1 No   Yes
2 No   Yes
3 No   No
4 Yes  No
5 No   No
6 Yes  Yes
7 No   No
8 Yes  Yes
9 No   No
10 No  No
11 No  Yes
12 No  Yes
13 Yes No
14 No  Yes
15 No  No
16 Yes No
17 Yes No
18 No  Yes
19 No  Yes
20 Yes No

在df2中查找唯一行:

> df2%>%group_by_all%>%count
# A tibble: 4 x 3
# Groups: y1, y2 [4]

输出

   y1      y2     n
  <int>  <int> <int>
1  No     No     6
2  No     Yes    7
3  Yes    No     5
4  Yes    Yes    2

示例3

在线演示

> z1<-sample(1:4,20,replace=TRUE)
> z2<-sample(1:4,20,replace=TRUE)
> df3<-data.frame(z1,z2)
> df3

输出

  z1 z2
1  1 4
2  2 3
3  1 4
4  1 3
5  4 3
6  2 3
7  3 2
8  1 3
9  1 3
10 1 4
11 4 1
12 2 1
13 4 4
14 4 4
15 3 3
16 4 2
17 4 1
18 4 2
19 2 1
20 1 3

在df3中查找唯一行:

> df3%>%group_by_all%>%count
# A tibble: 10 x 3
# Groups: z1, z2 [10]
z1 z2 n

输出

  <int> <int> <int>
1   1     3     4
2   1     4     3
3   2     1     2
4   2     3     2
5   3     2     1
6   3     3     1
7   4     1     2
8   4     2     2
9   4     3     1
10  4     4     2

更新于:2021年3月4日

1K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告