如何在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
广告