我有一些数据,看起来像下面这样。
输出结果如下:
id from data to date
1 2015-03-09 2015-03-14
2 2015-02-22 2015-02-24
2 2015-05-06 2015-05-17
3 2015-02-12 2015-02-16
4 2015-03-10 2015-03-16
4 2015-03-22 2015-04-07
4 2015-06-07 2015-07-07
4 2015-07-06 2015-07-07
4 2015-08-02 2015-08-07
我想创建一个单独的变量,该变量是按id分组的两个日期之间的差异。每个id的第一次将为NA。我尝试了以下方法,基于stackoverflow上的其他答案,但我无法实现。
library(data.table)
chf1 = data.table(id = chf$id,from date = chf$f.date,to_date = chf$t.date)
setkey(chf1,id)
chf1[,diff:=c(NA,difftime(from_date, to_date, units = "days")),by=id]
输出结果如下:
id from_date to_date difference
1 2015-03-09 2015-03-14 NA
2 2015-02-22 2015-02-24 NA
2 2015-05-06 2015-05-17 71
3 2015-02-12 2015-02-16 NA
4 2015-03-10 2015-03-16 NA
4 2015-03-22 2015-04-07 6
4 2015-06-07 2015-06-10 64
4 2015-07-06 2015-07-07 26
4 2015-08-02 2015-08-07 26
chf1[,diff:=difftime(from_date, to_date, units = "days"),by=id]
。chf1$from_date
获取整个列,按 'id' 分组不会产生任何效果。另外,diff
需要将 NA 或 0 或其他值附加到输出中,而不是difftime
。 - akrun