R: удалить кластеры строк повторяющихся элементов в столбце - PullRequest
0 голосов
/ 07 июня 2018

У меня есть фрейм данных с 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

Желаемый результат:

    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 голосов
/ 07 июня 2018

С tidyverse
Как это?

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