我有一个包含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),]
答案 0 :(得分:-1)
tidyverse
这样?
df1%>%
slice(-sample(which(y==2), round(length(which(df1$y==2))*0.5,0)) )