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

Пожалуйста, у меня есть набор данных тройного класса, содержащий 129 переменных и около 58 000 наблюдений (строк). Моя переменная ответа имеет 3 класса: Attack, Natural и NoEvents. Распределение классов показано ниже. Однако я намерен уменьшить классы «Natural» и «NoEvent» на 80%, чтобы позволить мне создать несбалансированный набор данных, но мой код, похоже, не работает. Не могли бы вы мне помочь?

 > reduced<- sample_frac(powerData, powerData$marker=="Natural" & 
  powerData=="NoEvent",0.8)
 > 
 > table(powerData$marker)

 Attack  Natural NoEvents 
 40914    13351     3225 

1 Ответ

0 голосов
/ 16 июня 2020

Вот очень простой вариант, который позволяет вам отлично контролировать ...

# dplyr 1.0.0
naturalsample <- powerData %>% filter(marker == "Natural") %>% slice_sample(prop = .2)
attacksample <- powerData %>% filter(marker == "Attack") %>% slice_sample(prop = .2)
noeventall <- powerData %>% filter(marker == "NoEvent")

# dplyr <1 use sample_frac(size = .2)

rbind(naturalsample, attacksample, noeventall)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...