如何删除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的行,其中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的行,其中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的行,其中z1的重复值数量大于或等于2-

示例

> df3[df3$z1 %in% names(which(table(df3$z1)<2)),]
输出结果
  z1 z2 z3 z4
1 5  1  3  3