我有一个看起来像这样的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)))
但0s
和1s
的比例并不总是保留,
由于
答案 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))