Извлечь квалифицированный образец из фрейма данных - PullRequest
0 голосов
/ 24 сентября 2018

Я хотел бы нарисовать случайную выборку строк из кадра данных;однако не все строки должны быть включены в отрисовку, только те, которые удовлетворяют отрицательному условию: они не соответствуют определенной переменной во втором кадре данных.Вот некоторые фиктивные данные:

 df1 <- data.frame(
  x = c("A", "B", "L", "G", "C", "F", "S", "J", "G", "K", "X", "Y", "B", "C", "Z")
)

df2 <- data.frame(
  a = LETTERS[1:5],
  b = 1:5
)

Фрейм данных, из которого я хочу нарисовать образец, это df1.Ничья должна исключать те точки данных в df1 $ x, которые соответствуют точкам данных в первом столбце df2, что составляет df2$a.До сих пор я пробовал это:

df1[sample(1:nrow(df2[-(match(df1$x, df2$a))]), 7, replace = F), ]

, который выдает сообщение об ошибке;и я попробовал это:

df1[sample(1:nrow(df2[!match(df1$x, df2$a),]), 7, replace = F), ]

, который не выдает ошибку, но содержит нежелательные данные.Любые решения?

1 Ответ

0 голосов
/ 24 сентября 2018

Мы можем исключить строки, взяв индексы в df1$x, которых нет в df2$a, используя which, а затем взяв sample из этих индексов.

df1[sample(which(!df1$x %in% df2$a), 7), ,drop = FALSE]

#   x
#7  S
#15 Z
#8  J
#9  G
#3  L
#12 Y
#6  F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...