2016-11-21 8 views
2

ファクタのレベル内でランダムなサンプルを選択したいとします。ファクタのレベル内のランダムサンプルを選択します。ファクタのレベルに応じてサイズが異なります。

library(dplyr) 
newdf <- ddply(iris, ~Species, function(x){ 
    ndf <- x[sample(nrow(x),2), ] 
}) 
with(newdf,table(Species)) 

をしかし、私は単純に各因子のレベルから2つの観測をサンプリングしたくない:私はddply使用して因子レベル内のサンプルを得ることができます。むしろ、種の3つのレベル(すなわち、2つのsetosaから3つ、versicolorから3つ、4つのfir virginica)から2,3、4つの観察をサンプリングしたいと思います。これどうやってするの?

値のベクトルを作成できますか? c(2,3,4)は、各データフレームをddplyで分割して循環させるか?

ベクトルの値を指定する必要があります。これらの値はすべてのデータの一貫した割合でもなく、一貫した数値でもありません。

答えて

2

我々はrbindlist出力を観測するMapsampleに番号を使用し、「種」によってデータセットをsplit、と。

do.call(rbind, Map(function(x,y) x[sample(y),], split(iris, iris$Species), 2:4)) 
+1

ありがとうございます@akrun。それは美しく働いています。私は数週間後にはそうでないように、すぐにそれを見ていない人のために、最後の2:4をサンプルサイズの名前付きベクトルに置き換えることができます。 – sianagh

関連する問題