У меня есть набор данных, который выглядит следующим образом:
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
Я хотел бы, чтобы каждый человек получил разницу в днях с первой даты в дате1 во второй группе ипоследняя дата в date2 предыдущей группы.Так, например, человеку с id = A, я хочу получить разницу дней "03/04/2017" и "29/03/2017".То же самое для пациента Б. У меня есть несколько групп внутри каждого человека.Я хотел бы в итоге получить такой набор данных:
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
Я много раз для этого искал, нашел и отвечу за вычитание первого и последнего наблюдения в одной и той же группе, но ничего о последнем и первомразных групп.Любая помощь приветствуется.Спасибо.