2017-05-17 8 views
0

私はRStudioを使ってRを学習し始めましたが、おそらくいくつかの基本的な質問があります。 そのうちの1人が「サンプル」機能を考慮しています。 具体的には、私のデータセットは、147変数の402224個の観測値から構成されています。私の任務は、50の観測サンプルを採取し、データフレームを生成することです。 しかし、関数サンプルが実行されると、 y = sample(mydata, 50, replace = TRUE, prob = NULL) となり、結果は50個の変数の40224個の観測値を持つデータセットになります。つまり、サンプリングはobesrvationsではなく変数で行われます。サンプル関数in R

なぜそれが起こるかご存知ですか? ありがとうございます。

+0

のようなものです作業サンプリングコードはhttp://stackoverflow.com/q/8273313/3093387にあります。答えでわかるように、行の索引付けを使用する必要があります。 – josliber

答えて

2

あなたのデータフレームからの交換で50回の観測のデータフレームを作成したい場合は、試すことができます:

mydata[sample(nrow(mydata), 50, replace=TRUE), ] 

また、あなたはdplyrパッケージからsample_n機能を使用することができます。

sample_n(mydata, 50) 
0

sampleはベクトルのみを受け入れるためです。 は、次のことを試してください。

library(data.table) 
set.seed(10) 
df_sample<- data.table(df) 
df[sample(.N, 402224)] 
0

人々が与えられている他の回答の行を選択しているが、あなたは列の後にあるように見えます。同様の方法でこれを達成することができます。

ここにサンプルdfがあります。その後

df = data.frame(a = 1:5, b = 6:10, c = 11:15) 
> df 
    a b c 
1 1 6 11 
2 2 7 12 
3 3 8 13 
4 4 9 14 
5 5 10 15 

は、ランダムに2列を選択すると、すべての観測は、私たちがこの

> df[ , sample(1:ncol(df), 2)] 
    c a 
1 11 1 
2 12 2 
3 13 3 
4 14 4 
5 15 5 

を行うことができ、あなたがしたいと思うものをあなたが見ることができます。この

y = mydata[ , sample(1:ncol(mydata), 50)]