【发布时间】:2017-05-01 11:41:22
【问题描述】:
这里是我的时间段范围:
start_day = as.Date('1974-01-01', format = '%Y-%m-%d')
end_day = as.Date('2014-12-21', format = '%Y-%m-%d')
df = as.data.frame(seq(from = start_day, to = end_day, by = 'day'))
colnames(df) = 'date'
我需要创建 10,000 个数据帧,每个数据帧具有 365 天的不同假年份。这意味着 10,000 个 data.frame 中的每一个都需要有不同的开始和结束年份。
df 总共有 14,965 天,除以 365 天 = 41 年。换句话说,df 需要按 41 年(每个 365 天)分组10,000 次不同。
每年的开始必须是随机的,所以可以是1974-10-03, 1974-08-30, 1976-01-03, 等等...结束的剩余日期df需要循环使用与开始的。
分组的假年份需要出现在 data.frames 的第三列。
我会将所有 data.frames 放入一个列表,但我不知道如何创建生成 10,000 个不同年份的开始日期并随后将每个 data.frames 与 365 天窗口分组 41 次的函数。
谁能帮帮我?
@gringer 给出了一个很好的答案,但它只解决了 90% 的问题:
dates.df <- data.frame(replicate(10000, seq(sample(df$date, 1),
length.out=365, by="day"),
simplify=FALSE))
colnames(dates.df) <- 1:10000
我需要的是 10,000 列和 14,965 行,日期取自 df,在到达 df 末尾时需要最终回收。
我尝试更改 length.out = 14965,但 R 不回收日期。
另一种选择可能是更改 length.out = 1 并最终通过保持相同的顺序为每列添加剩余的 df 行:
dates.df <- data.frame(replicate(10000, seq(sample(df$date, 1),
length.out=1, by="day"),
simplify=FALSE))
colnames(dates.df) <- 1:10000
如何将剩余的 df 行添加到每个列?
【问题讨论】:
-
也许
sample(df$date, 10000)可以帮助您获得 10000 个不同的随机开始日期?
标签: r date dataframe grouping montecarlo