【发布时间】:2020-08-14 09:49:12
【问题描述】:
我有两个数据框:
d1 <- data.frame(id=1,a=1,start_d1=10, end_d1=19)
d2 <- data.frame(id=1,b=2, start_d2=15, end_d2=24)
实际上,start 和 end 是日期,数据框很大,但我想在这里保持简单。
现在我想加入id,然后根据各自的开始日期和结束日期重叠的位置获取新行。结果应该是一个数据框d:
id | a | b | start | end
----------------------------
1 | 1 | NA | 10 | 14
1 | 1 | 2 | 15 | 19
1 | NA | 2 | 20 | 24
我现在在做什么:我加入d1和d2 id 以获得d。
然后我将我编写的显式函数应用到d 中的每一行,该函数根据重叠将行拆分为新变量start 和end。
这有点乱。有没有更简单的方法来解决我的问题?
【问题讨论】:
-
嗨,预期的输出是多少。请
dput()你的预期输出会很好。 -
类似
merge?d <- merge(d1,d2,by=c('id','start','end'),all=T) -
@TusharLad 不,这并没有给我们一个单独的行来表示开始和日期的重叠
-
您可以在删除数据框名称中
_之后的所有内容后使用rbind!
标签: r