有没有一种更好的方法可以随机减少数据帧的行数?

时间:2020-06-16 14:01:06

标签: r

请给我一个三元组数据集,其中包含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 :(得分:0)

这是一个非常简单的选项,可让您掌控一切...

# 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)