【问题标题】:MonteCarlo simulation - Create 100 data.frames with rows grouped randomly with a fixed number of subsequent daysMonteCarlo 模拟 - 创建 100 个数据帧,其中行随机分组,后续天数固定
【发布时间】:2017-09-28 16:50:10
【问题描述】:

这是我的 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,其中每个 date(和 ID)col 将按随后的 3 天随机分组。

例如

df1

ID date group
    a 1 1   #group 1 = 1, 2, 3
    a 2 1
    a 3 1
    a 4 2   # group 2 = 4, 5, 6
    a 7 3   # group 3 = 7, 8, 9
    a 12 4  # group 4 = 10, 11, 12

df2

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

df3

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

等等……

请注意,group col 通过考虑不一定出现在 data.frame 中的后续日期,将行按 3 分组,并且整个技巧的随机性是第 1 组的开始日期。

你有什么建议吗?

【问题讨论】:

    标签: r date random grouping montecarlo


    【解决方案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 组的随机开始将我的 data.frame 按 3 个后续日期分组 100 次
    • 因此它不仅基​​于日期而且基于组,因为后续日期取决于按顺序出现的组(如果第 2 组后面跟着第 4 组,则跳过第 3 组序列)。另外,我很困惑为什么有时 11 后面跟着 12,有时后面跟着 1,2(对于第 1 组)。在 df3 示例中,组 4 的值(但不在列表中)与 group1 重叠,对吗?
    • 我更新了我的问题。第 4 组只有 2 个观察值,因为数据不能被 3 整除。当第 1 组不是从第 1 行开始时,data.frame 末尾的组值将重新从头开始回收。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2020-10-12
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多