我可以像这样从 data.frame 中采样 10 行:
mtcars[sample(1:32, 10),]
使用 dplyr 执行此操作的语法是什么?这是我尝试过的:
library(dplyr)
filter(mtcars, sample(1:32, 10))
我相信您在示例中并没有真正“过滤”,您只是在对行进行采样。
用 hadley 的话来说,这里是函数的目的:
filter() 与子集() 的工作方式类似,只是您可以为其提供任意数量的过滤条件,这些条件与 & 连接在一起(不是 &&,这很容易意外做到!)
这是 mtcars 数据集的示例,因为它在介绍性小插图中使用
library(dplyr)
filter(mtcars, cyl == 8, wt < 3.5)
mpg cyl disp hp drat wt qsec vs am gear carb
1 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
2 15.2 8 304 150 3.15 3.435 17.30 0 0 3 2
3 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4
作为结论:过滤器等效于subset()
,而不是sample()
。
想出了如何做到这一点(尽管乔什·奥布莱恩(Josh O'Brien)击败了我):
filter(mtcars, rownames(mtcars) %in% sample(rownames(mtcars), 10, replace = F))