我想用difftime计算两行(每个ID)之间的日差。在开始时我得到了正确的结果,但在某些行中有不一致的值:
PatId Date Tage
3l 2015-02-10 NA
3l 2015-03-30 48
3l 2015-06-03 65
...
5r 2016-02-02 NA
5r 2016-03-01 62
5r 2016-03-29 -469
这是我的功能:
setDT(AllPat)[, Tage := difftime(AllPat$Date, shift(AllPat$Date), units = "days"), by = PatID]
我已经用tz =" GMT"尝试了它,但它没有改变,也许有人有想法?
让任何人知道如何更改函数来计算差异并始终在第一行写入,以便最后一行只有NA
答案 0 :(得分:0)
您无法在数据表命令中调用AllPat$Date
,并希望程序通过PatID将其拆分。您的程序当前尝试为每个ID使用整个向量AllPat$Date
。您需要在数据表中引用Date变量,以便程序可以与Date和PatID一起使用(如果有意义的话)。
我会先将您的data.frame
转换为data.table
,以尽可能保留您的代码
dtAllPat=as.data.table(AllPat)
dtAllPat[, Tage := difftime(Date, shift(Date), units = "days"), keyby = .(PatID)]