首页 > 解决方案 > 有没有办法可以从较大的数据框中删除这个新的数据框?

问题描述

请我需要一些帮助来解决这个问题。我有一个包含超过 57,000 行和 129 列的数据框(myData),我的响应变量是 3 个级别的因子。我的意图是将我的响应变量中的一个即时类的大小减少 80%,但是当我使用此代码时,它反而创建了一个子集,从 myData 数据框中“减少”,这与我删除行的意图相反。我怎样才能从主数据框中减去这个子集,或者有其他方法可以做到吗?

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

标签: r

解决方案


我没有安装 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

推荐阅读