MonteCarlo simulation-创建100个data.frames,其中的行以固定的后续天数随机分组

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分组,整个技巧的随

下面是我的data.frame示例,假设
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))) }