如何删除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