簡體   English   中英

在R中,是否有一種方法可以使用滯后時間在兩個不同的列中兩次獲取兩次之間的時間差,但忽略所有空值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM