2014-05-23 23 views
0

我有55個變量640個觀測構成的數據幀(d)。樣品複製

我想隨機抽樣在64個 觀測的10個子數據幀這個數據幀55名的變量。我不希望任何觀察在 多個子數據幀。

這一個樣品

d1 <- d[sample(nrow(d),64,replace=F),] 

代碼工作,我怎麼能重複這種治療十倍?

這個人給我10個變量的數據幀(每一個都是一個樣......)

d1 <- replicate(10,sample(nrow(d),64,replace = F))} 

誰能幫助我?

回答

1

下面是返回data.frames列表結果的解決方案:

d <- data.frame(A=1:640, B=sample(LETTERS, 640, replace=TRUE)) # an exemplary data.frame 
idx <- sample(rep(1:10, length.out=nrow(d))) 
res <- split(d, idx) 
res[[1]] # first data frame 
res[[10]] # last data frame 

唯一棘手的部分涉及創建idxidx[i]識別{1,...,10},其中將發生的di第i行所得data.frame,idx[i]。這種方法向我們保證,沒有行將被放入多於一個數據幀中。

另外,還要注意sample返回的隨機排列(1,2,...,10,1,2,...,10)。

另一種方法是使用:

apply(matrix(sample(nrow(d)), ncol=10), 2, function(idx) d[idx,]) 
+0

謝謝,但我有一個問題依然。這似乎適用於1變量的df,但我有55 – ePoQ

+0

我會嘗試另一種方式,因爲我真的是一個開始在R我有一個640行和55列的數據框稱爲D.我想把這個數據幀分成64行和55列的10個子集。但是我需要重新劃分子集中的行以隨機化。 – ePoQ

+0

那麼,我檢查了一個df有很多列,它的工作原理是... – gagolews