【问题标题】:Get date difference for different rows of a id for multiple ids in R获取R中多个ID的ID的不同行的日期差异
【发布时间】:2017-07-19 05:56:06
【问题描述】:

如果 id 相同,我想获取 2 个连续行的日期差异。

一个简单的代码是:

for(i in 2:nrow(Data))
{
  if(id[i]==id[i-1]
  {
   dated[i]-dated[i-1]
  }
}

但是这种循环需要很长时间才能执行。有没有更快的方法在超过 200 万行上运行这种代码?

【问题讨论】:

    标签: r loops if-statement


    【解决方案1】:

    我们可以通过data.table 做到这一点。将'data.frame'转换为'data.table'(setDT(df1)),按'id'分组,得到'dated'列的差异(diff

    library(data.table)
    setDT(df1)[, .(datedifference = diff(dated)), id]
    

    【讨论】:

    • 您好,谢谢您的解决方案。虽然这完美地工作并提供了一个表格,但我想将它作为一列添加到已经存在的数据框中。你能指导我如何进行吗?
    • @eclairs Iin that case do setDT(df1)[, datedifference := c(NA, diff(dated)), id]
    猜你喜欢
    • 1970-01-01
    • 2019-04-30
    • 2022-01-06
    • 2023-01-18
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2014-10-27
    相关资源
    最近更新 更多