【发布时间】:2018-11-27 12:22:11
【问题描述】:
我有一个看起来像这样的数据集:
x = data.frame(id = c("A","A","A","A","B","B","B","B"), group = c(1,1,2,2,3,3,4,4),
date1 = c("25/03/2017", "26/03/2017","03/04/2017","04/04/2017",
"04/05/2017","26/08/2017","28/08/2017","30/08/2017"),
date2 = c("26/03/2017","29/03/2017","04/04/2017","04/05/2017",
"18/05/2017","28/08/2017","29/08/2017","31/08/2017")
)
> x
id group date1 date2
1 A 1 25/03/2017 26/03/2017
2 A 1 26/03/2017 29/03/2017
3 A 2 03/04/2017 04/04/2017
4 A 2 04/04/2017 04/05/2017
5 B 3 04/05/2017 18/05/2017
6 B 3 26/08/2017 28/08/2017
7 B 4 28/08/2017 29/08/2017
8 B 4 30/08/2017 31/08/2017
我想做的是让每个人获取第二组 date1 中的第一个日期和前一组 date2 中的最后一个日期的日期差异。因此,例如,id = A 的人,我想获得“03/04/2017”和“29/03/2017”的天数差异。患者 B 也是如此。我每个人都有多个组。 我想最终得到一个这样的数据集:
y = data.frame(id = c("A","A","B","B"), group = c(1,2,3,4),
date1 = c("26/03/2017","03/04/2017","26/08/2017","28/08/2017"),
date2 = c("29/03/2017","04/04/2017","28/08/2017","29/08/2017"),
datediff = c(NA,5,NA,0)
)
> y
id group date1 date2 datediff
1 A 1 26/03/2017 29/03/2017 NA
2 A 2 03/04/2017 04/04/2017 5
3 B 3 26/08/2017 28/08/2017 NA
4 B 4 28/08/2017 29/08/2017 0
为此,我环顾四周,发现并回答了在同一组中减去第一个和最后一个观察结果,但对不同组的最后一个和第一个观察结果一无所知。任何帮助将非常感激。谢谢。
【问题讨论】:
-
不清楚您希望解决方案有多通用。您是否总是每个
id有 2 个组,每个组有 2 行? -
我并不总是每个 id 有 2 个组,也不总是有 2 个 id。这只是我的数据集的一个示例,用于说明。我提到我在 id 中有多个组,但也许我应该更清楚。我希望解决方案尽可能通用。
标签: r dplyr data-manipulation lubridate