【发布时间】:2017-05-08 16:01:04
【问题描述】:
这是我的 data.frame 的示例:
df = read.table(text = 'ID Day
101 0
101 0
101 1
300 40
300 40
270 32
270 35
100 1450
100 1450
100 1451
72 1490
72 1499', header = TRUE)
假设每个Day obs 代表一个真实日期,并且时间段范围从Day = 0 到Day = 1500,我需要将每个ID 组随机移动Day (delta t),特定于每个组,如果 Day 值超过 1500,则从 0 重新开始。
例如第 101 组 30 天,第 300 组 70 天,第 270 组 1000 天,第 100 组 100 天,第 72 组 5 天
这是我想要的输出:
ID Day
101 30
101 30
101 31
300 110
300 110
270 1032
270 1035
100 1550
100 1550
100 1551
72 1495
72 3
请注意,每组Day 的变化必须是随机的。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
不确定我是否明白了,但使用
data.table你可以试试setDT(df)[,Day_new:=(Day+runif(uniqueN(ID),0,1500))%%1500,by=ID]。 -
对不起,它不起作用,谢谢
-
我相信诀窍是将随机数添加到每组 ID 中的每一天
标签: r random dataframe rows shift