Есть ли способ удалить этот новый фрейм данных из большего фрейма данных? - PullRequest
0 голосов
/ 17 июня 2020

Пожалуйста, мне нужна помощь, чтобы решить эту проблему. У меня есть фрейм данных (myData) с более чем 57 000 строками и 129 столбцами, а моя переменная ответа является трехуровневой. Мое намерение состояло в том, чтобы уменьшить размер одного из мгновенных классов в моей переменной ответа на 80%, но когда я использовал этот код, вместо этого он создал подмножество, «уменьшенное» из фрейма данных myData, в отличие от моего намерения отбросить строки. Как я могу вычесть это подмножество из основного фрейма данных или есть другой способ сделать это?

 reduced <- myData %>% filter(marker == "Natural") %>% dplyr::slice_sample(prop = 0.8)

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

У меня не установлен dplyr 1.0.0, поэтому у меня нет slice_sample, но я предполагаю, что вы могли бы сделать что-то подобное с slice_sample

df <- data.frame(marker = rep(c('Natural', 'Other'), c(10, 10)),
                 x = runif(20))

df %>% 
  group_by(marker) %>% 
  sample_frac(if(first(marker) == 'Natural') .8 else 1)

# # A tibble: 18 x 2
# # Groups:   marker [2]
#    marker      x
#    <fct>   <dbl>
#  1 Natural 0.359
#  2 Natural 0.529
#  3 Natural 0.466
#  4 Natural 0.424
#  5 Natural 0.623
#  6 Natural 0.431
#  7 Natural 0.126
#  8 Natural 0.828
#  9 Other   0.545
# 10 Other   0.522
# 11 Other   0.826
# 12 Other   0.788
# 13 Other   0.580
# 14 Other   0.244
# 15 Other   0.633
# 16 Other   0.432
# 17 Other   0.920
# 18 Other   0.124
0 голосов
/ 17 июня 2020

Вы можете комбинировать данные reduced с данными unreduced, т.е. marker без "Natural".

library(dplyr)

reduced <- myData %>% 
               filter(marker == "Natural") %>% 
               dplyr::slice_sample(prop = 0.8)

unreduced <- myData %>% filter(marker != "Natural")

combine_data <- bind_rows(reduce, unreduced)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...