R:删除列中重复元素的行簇

时间:2018-06-07 08:47:03

标签: r dataframe subset

我有一个包含2列的数据框,其中第二列可以有二进制值(1或2)。我想随机删除第二列始终为2的行。

示例:

df1<-data.frame(x=seq(10),y=c(1,2,2,1,2,2,1,2,1,2))
[1] df1

    x y
1   1 1
2   2 2
3   3 2
4   4 1
5   5 2
6   6 2
7   7 1
8   8 2
9   9 1
10 10 2

给定2作为簇大小,有两个簇:A:行2和3以及B:行5和6.我想随机删除50%的簇,这意味着删除行2和3或5和6 < / p>

期望的输出:

    x y
1   1 1
4   4 1
5   5 2
6   6 2
7   7 1
8   8 2
9   9 1
10 10 2

我尝试了这个但不起作用:

cluster_size=2
percentage_clusters_to_remove= 0.5
clusters<-which(df1$y==rep(cluster_size,2))
remove<-sample(clusters, length(clusters)*percentage_clusters_to_remove)
df2<-df1[-c(remove),]

1 个答案:

答案 0 :(得分:-1)

tidyverse这样?

df1%>%
  slice(-sample(which(y==2), round(length(which(df1$y==2))*0.5,0)) )