MonteCarlo simulation-创建100个data.frames,其中的行以固定的后续天数随机分组
下面是我的data.frame示例,假设MonteCarlo simulation-创建100个data.frames,其中的行以固定的后续天数随机分组,r,date,random,grouping,montecarlo,R,Date,Random,Grouping,Montecarlo,下面是我的data.frame示例,假设datecol表示天数: df = read.table(text = 'ID date a 1 a 2 a 3 a 4 a 7 a 12', header = TRUE) 因此,我在这里的天数从1天到12天不等,我想创建100个data.frames,其中每个data.frames的date(和ID)列将按随后的3天随机分组 e、 g df1 df2 df3 等等 请注意,组列通过考虑data.frame中不一定出现的后续天数将行按3分组,整个技巧的随
date
col表示天数:
df = read.table(text = 'ID date
a 1
a 2
a 3
a 4
a 7
a 12', header = TRUE)
因此,我在这里的天数从1天到12天不等,我想创建100个data.frames,其中每个data.frames的date
(和ID
)列将按随后的3天随机分组
e、 g
df1
df2
df3
等等
请注意,组
列通过考虑data.frame中不一定出现的后续天数将行按3分组,整个技巧的随机性是第1组的开始日期
您有什么建议吗?不确定,但您可以创建一个空列表并填充新的数据框,类似于您的示例:
set=list()
for(i in 1:100) { set[[i]] = cbind(df,group=sample(rep(c(1,2),each=3))) }
嗨,谢谢你。问题是,我的组需要是3个后续日期的后续块。我试图理解您的示例,后续日期样本是否依赖于日期列?或者它是否取决于分组变量cq?如果有四个唯一的“组”,则您有12个后续日期。谢谢,是的!日期的后续样本取决于日期列。例如df1:第1组=日期1、2、3;等我只需要对我的数据进行分组。根据第1组的随机开始,按3个后续日期进行100次帧划分,这样不仅基于日期,而且基于组,因为后续日期取决于顺序发生的组(如果第2组后面跟着4,则跳过第3组顺序)。此外,我还不明白为什么有时11后面跟着12,有时后面跟着1,2(对于第一组)。在df3示例中,组4(但不在列表中)的值与组1重叠,对吗?我更新了我的问题。第4组只有2次观察,因为数据不能被3整除。当组1不是从第1行开始时,data.frame末尾的组值将从开始重新循环。
ID date group
a 1 4
a 2 1 #group 1 = 2, 3, 4
a 3 1
a 4 1
a 7 2 #group 2 = 5, 6, 7 --- group 3 = 8, 9, 10
a 12 4 # group 4 = 11, 12 and start again from the beginning 1
ID date group
a 1 1
a 2 1
a 3 2 #group 2 = 3, 4, 5
a 4 2
a 7 3 #group 3 = 6, 7, 8 -- group 4 = 9, 10, 11
a 12 1 #group 1 = 12, 1, 2
set=list()
for(i in 1:100) { set[[i]] = cbind(df,group=sample(rep(c(1,2),each=3))) }