次のように、data.frame から 10 行をサンプリングできます。
mtcars[sample(1:32, 10),]
dplyrでこれを行うための構文は何ですか? これは私が試したものです:
library(dplyr)
filter(mtcars, sample(1:32, 10))
あなたの例では実際に「フィルタリング」しているのではなく、行をサンプリングしているだけだと思います。
ハドリーの言葉を借りれば、関数の目的は次のとおりです。
filter() は、subset() と同様に機能しますが、 & で結合された任意の数のフィルタリング条件を指定できる点が異なります (誤って簡単に実行できる && ではありません!)。
紹介ビネットで使用されている 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
結論として: filter は と同等でsubset()
あり、 ではありませんsample()
。
それを行う方法を考え出しました(ただし、Josh O'Brienは私を打ち負かしました):
filter(mtcars, rownames(mtcars) %in% sample(rownames(mtcars), 10, replace = F))