如何在R数据框中删除重复值数量大于或等于特定次数的行?


为了删除数据框中重复值数量大于特定次数的行,我们可以创建一个子集,其中包含重复值数量小于特定次数的行。为此,我们首先需要提取这些行,然后使用特定列对数据框进行子集化,如下例所示。

示例1

考虑以下数据框:

在线演示

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

输出

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

删除基于x1列中重复值数量大于或等于3的行:

示例

df1[df1$x1 %in% names(which(table(df1$x1)<3)),]

输出

   x1 x2
14 2  2
19 2  0

示例2

在线演示

> y1<-rpois(20,2)
> y2<-rpois(20,2)
> y3<-rpois(20,2)
> df2<-data.frame(y1,y2,y3)
> df2

输出

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

删除基于y2列中重复值数量大于或等于2的行:

示例

> df2[df2$y2 %in% names(which(table(df2$y2)<2)),]

输出

   y1 y2 y3
18 2  4  1

示例3

在线演示

> z1<-rpois(20,2)
> z2<-rpois(20,2)
> z3<-rpois(20,2)
> z4<-rpois(20,2)
> df3<-data.frame(z1,z2,z3,z4)
> df3

输出

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

删除基于z1列中重复值数量大于或等于2的行:

示例

> df3[df3$z1 %in% names(which(table(df3$z1)<2)),]

输出

  z1 z2 z3 z4
1 5  1  3  3

更新于:2021年3月5日

290 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告