2014-02-14 54 views
0

我有data.frame看起來像這樣(我的真實data.frame較大,但結構類似):隨機基於列和data.frame保持比例

df <- data.frame(ID=c(rep('A', 5), rep('B', 5), rep('C',5)), Score=c(1,1,0,0,0,1,1,1,0,0,1,1,1,0,0)) 

,我會希望獲得幾個隨機 data.frames(如100),其中列分數是隨機和列ID仍然是相同的,但我必須保持相同數量的那些在`$ DF得分了。

我已經試過:

df1 <- transform(df, Score=ave(Score, ID, FUN=function(b) sample(b, replace=T))) 

0s1s比例並不總是保持,

感謝

回答

2

如果你想保持內ID 0-1比例s,設置爲replace=F(這是默認設置):

df1 <- transform(df, Score=ave(Score, ID, FUN=function(b) sample(b, replace=F))) 

如果你想保持整體0-1比例予以,你可以簡單地這樣做:

df1 <- data.frame(ID=df$ID, Score=sample(df$Score)) 
+0

感謝您的回答@胡利安烏爾巴諾 – user2380782

+0

@ user2380782高興幫助 –