[英]In R, is there a way to get the time difference between two times in two different columns using lag, but ignoring all null values?
我有一個看起來像這樣的數據框:
a<-data.frame(Time = c("Time1",
"Time2",
"Time3",
"Time4",
"Time5",
"Time6"),
Start = c("2018-03-17 08:38:00",
NA,
NA,
NA,
NA,
NA),
End = c(NA,
NA,
NA,
NA,
NA,
"2018-03-17 14:31:00"))
我正在嘗試添加另一列,其中“結束”時間與“開始”時間之間存在時差。
我嘗試使用difftime(End,lag(Start),units =“ mins”)。 但是我似乎無法弄清楚如何忽略空值以使用“開始”中的最后一個非空值。
這就是我期望結果看起來的樣子:
b<-data.frame(Time = c("Time1",
"Time2",
"Time3",
"Time4",
"Time5",
"Time6"),
Start = c("2018-03-17 08:38:00",
NA,
NA,
NA,
NA,
NA),
End = c(NA,
NA,
NA,
NA,
NA,
"2018-03-17 14:31:00"),
Time_Diff_min = c(rep(353, times = 6)))
謝謝!
將na.locf0
應用於兩列並相減。
library(zoo)
transform(a, diff = as.numeric(difftime(na.locf0(as.POSIXct(End), fromLast = TRUE),
na.locf0(as.POSIXct(Start)),
unit = "min")))
給予:
Time Start End diff
1 Time1 2018-03-17 08:38:00 <NA> 353
2 Time2 <NA> <NA> 353
3 Time3 <NA> <NA> 353
4 Time4 <NA> <NA> 353
5 Time5 <NA> <NA> 353
6 Time6 <NA> 2018-03-17 14:31:00 353
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.