0

我想用 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

4

1 回答 1

0

您不能调用AllPat$Date数据表命令并期望您的程序按 PatID 拆分它。您的程序当前尝试对每个 ID 使用整个向量AllPat$Date。您需要参考数据表中的 Date 变量,以便程序可以在有意义的情况下同时使用 Date 和 PatID。

我会将您转换data.framedata.table第一个以尽可能多地保留您的代码

dtAllPat=as.data.table(AllPat)
dtAllPat[, Tage := difftime(Date, shift(Date), units = "days"), keyby = .(PatID)]
于 2018-03-28T19:56:37.690 回答