我有多个大型数据帧来捕获持续一定时间的事件。这个例子给出了我的数据集的简化版本
数据框1:
ID Days Date Value
1 10 80 30
1 10 85 30
2 20 75 20
2 10 80 20
3 5 90 30
数据框 2:
ID Days Date Value
1 20 0 30
1 10 3 20
2 20 5 30
3 20 1 10
3 10 10 10
ID
在所有数据集中对同一个人使用相同的Days
指定事件的长度(如果Days
值为 10,则事件持续 10 天)Date
指定事件开始的日期。在这种情况下,Date
可以是 0 到 90 或 91 之间的任何数字(数据代表季度中的天数)Value
是按指定次数重复的属性Days
。例如,对于df1中的第一行,该值30
从第80天开始重复10次(30重复10天)
我感兴趣的是为ID
每个数据帧中的每一个赋予每天的最高值。请记住,多个事件可以重叠,然后必须将值相加。
最终的数据框应如下所示:
ID HighestValuedf1 HighestValuedf2
1 60 80
2 40 30
3 30 20
例如,对于ID
1,三个事件重叠并导致数据帧 2 中的最高值为 80。对于ID
3,df1 和 df1 的事件之间没有重叠,只有 df2 重叠。
由于文件的大小,我更喜欢一种避免将所有数据帧合并到一个数据帧中的解决方案。
编辑 我重新排列了我的数据,以便所有重叠的事件都在一个数据框中。我只需要每个数据帧的最高重叠值。
重现数据帧的代码:
ID = c(1,1,2,2,3)
Date = c(80,85,75,80,90)
Days = c(10,10,20,10,5)
Value = c(30,30,20,20,30)
df1 = data.frame(ID,Days, Date,Value)
ID = c(1,1,2,3,3)
Date = c(1,3,5,1,10)
Days = c(20,10,20,20,10 )
Value =c(30,20,30,10,10)
df2 = data.frame(ID,Days, Date,Value)
ID= c(1,2,3)
HighestValuedf1 = c(60,40,30)
HighestValuedf2 = c(80,30,20)
df3 = data.frame(ID, HighestValuedf1, HighestValuedf2)