根据列随机化data.frame并保持比例

时间:2014-02-14 00:25:31

标签: r permutation

我有一个看起来像这样的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),其中 Score 列是随机的,列 ID 保持不变,但我需要在`df $ Score中保留相同数量的一些

我试过了:

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

0s1s的比例并不总是保留,

由于

1 个答案:

答案 0 :(得分:2)

如果您想将0-1比例保持在ID 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))