如果我想从不同组中随机选择一些样本,我使用 plyr 包和下面的代码
require(plyr)
sampleGroup<-function(df,size) {
df[sample(nrow(df),size=size),]
}
iris.sample<-ddply(iris,.(Species),function(df) sampleGroup(df,10))
这里从每个物种中选取 10 个样本。
我的一些数据帧非常大,我的问题是我可以将相同的 SampleGroup 函数与 dplyr 包一起使用吗?或者还有另一种方法可以在 dplyr 中执行相同的操作吗?
EDIT
dplyr 包的 0.2 版本引入了两个新函数来从表中选择随机行sample_n 和sample_frac
是的,您可以使用 dplyr:
mtcars %>%
group_by(cyl) %>%
slice_sample(n = 2))
结果是这样的
Source: local data frame [6 x 11]
Groups: cyl
mpg cyl disp hp drat wt qsec vs am gear carb
1 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
3 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
4 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
5 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
6 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
历史注释:slice_sample()取代sample_n()在 dplyr 1.0.0(2020 年 5 月)中。需要早期版本的 dplyrdo(sample_n(., 2))
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)