【问题标题】:How to calculate timestamp difference in a loop? r [duplicate]如何计算循环中的时间戳差异? r [重复]
【发布时间】:2018-06-27 16:44:49
【问题描述】:

我有两列如下所示:

user_id  timestamp
3162507 "2016-11-15 21:26:58" 
3162507 "2016-11-15 21:28:13"
3180468 "2016-11-15 21:28:58"
3180468 "2016-11-15 21:29:47"
3180479 "2016-11-15 21:31:22"
3180479 "2016-11-15 21:31:35" ...

我想计算每个活动之间经过的时间。目前,我正在做一个循环。但是 R 循环很慢。

for (i in 1:nrow(df)){
  if (df$user_id[i] != df$user_id[i+1]){
    df$time[i] <- NA
  }else{
    df$time[i] <- difftime(df$timestamp[1+i],df$timestamp[i],units = "secs")
  }
}

有没有更好的方法?

【问题讨论】:

    标签: r loops time difftime


    【解决方案1】:
    library(data.table)
    df <- setDT(df)
    
    result <- df[,list( time = difftime(timestamp-c(timestamp[2:.N],NA)),units = "secs"), by = user_id]
    

    应该适用于连续的差异

    【讨论】:

    • 我正要更新我的示例。活动变量可以是 1 或 100。
    • @italo 那么,你想要什么不同?在所有连续时间之间还是第一次和最后一次之间?
    • @Lyngbakr 连续。 Sotos 发现了一个重复的问题。 stackoverflow.com/questions/48324212/…
    • 我更新了我的答案有连续的差异
    猜你喜欢
    • 2017-11-04
    • 2021-05-04
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多