【问题标题】:Difftime between rows inconsistent行之间的差异时间不一致
【发布时间】:2018-03-28 19:40:45
【问题描述】:

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

【问题讨论】:

    标签: r date difftime


    【解决方案1】:

    您不能在数据表命令中调用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)]
    

    【讨论】:

    • 你知道我如何改变函数来计算差异并将它始终写在第一行,这样一个ID的最后一行只有一个NA吗?
    • AllPat[, Tage := lead(as.numeric(difftime(Date, shift(Date), units = "days"))), keyby = .(PatID)]
    • Leadshift 相反,我必须先转换为数字才能应用 lead
    猜你喜欢
    • 2018-06-21
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多