试图获取R中两个时间点之间的时差。我在数据集中有NAs,我找不到正确的方法

试图获取R中两个时间点之间的时差。我在数据集中有NAs,我找不到正确的方法,r,time,difftime,R,Time,Difftime,我的数据当前位于两个单独的列中 T1示例看起来像2020-05-01 09:00:00 PM T2示例的时间为2020-05-02 04:00:00 AM 此数据还包含NAs 数据模式和类为字符 我想知道这两者的区别,以小时为单位 我试过这样的函数 df$TimeElapsedhours <- NA for (i in 1:nrow(df)) { if (!is.na(df$T1[i])) { df$TimeElapsedDays[i] <- difftime(df$T2

我的数据当前位于两个单独的列中

T1示例看起来像2020-05-01 09:00:00 PM

T2示例的时间为2020-05-02 04:00:00 AM

此数据还包含NAs

数据模式和类为字符

我想知道这两者的区别,以小时为单位

我试过这样的函数

df$TimeElapsedhours <- NA
for (i in 1:nrow(df)) {
  if (!is.na(df$T1[i])) {
    df$TimeElapsedDays[i] <- difftime(df$T2[i], df$T1[i], units = c("hours"))
  }
}

df$timeelapsedhurs我们不需要
来执行
循环,我们可以使用
润滑
来解析日期时间,并
dplyr
进行变异

library(dplyr)
library(lubridate)

df <- data.frame(T1 = parse_date_time(c("2020-05-01 09:00:00 PM",
                                        "2020-05-01 10:48:00 PM"), 
                                      '%Y-%m-%d %I:%M:%S %p'),
                 T2 = parse_date_time(c("2020-05-02 04:00:00 AM",
                                        "2020-05-02 05:45:00 AM"), 
                                      '%Y-%m-%d %I:%M:%S %p'))

df <- df %>% mutate(TimeElapsedDays = difftime(df$T2, df$T1, units = c("hours")))
对于NAs,这将在以下时间间隔天数列中给出NA

df1 <- data.frame(T1 = parse_date_time(c("2020-05-01 09:00:00 PM",NA), '%Y-%m-%d %I:%M:%S %p'),
                 T2 = parse_date_time(c("2020-05-02 04:00:00 AM","2020-05-02 04:00:00 AM"), '%Y-%m-%d %I:%M:%S %p'))

df2 <- df1 %>% mutate(TimeElapsedDays = difftime(df1$T2, df1$T1, units = c("hours")))

> df2
                   T1                  T2 TimeElapsedDays
1 2020-05-01 21:00:00 2020-05-02 04:00:00         7 hours
2                <NA> 2020-05-02 04:00:00        NA hours
df1-df2
T1 T2时间间隔天数
1 2020-05-01 21:00:00 2020-05-02 04:00:00 7小时
2020-05-02 04:00:00北美时间
但我们可以把它去掉

df2 <- na.omit(df2)
df2
> df2
                   T1                  T2 TimeElapsedDays
1 2020-05-01 21:00:00 2020-05-02 04:00:00         7 hours
df2-df2
T1 T2时间间隔天数
1 2020-05-01 21:00:00 2020-05-02 04:00:00 7小时

请按照标签主页顶部的要求,使用
dput
提供可复制的输入数据。如果没有可复制的示例,我们将无法为您提供帮助。我仍然遇到同样的问题。例如,该代码告诉我,“2020-05-01 10:48:00 PM”和“2020-05-02 05:45:00 AM”之间的差异为18.95小时。它应该是:6.95我还需要它来保持时间部分的小时和分钟。因此,我只是保留了我的格式,并将其输入到公式中,就像我编辑了我的答案一样。对不起,我没有看到第一个版本给出了错误的答案!
df1 <- data.frame(T1 = parse_date_time(c("2020-05-01 09:00:00 PM",NA), '%Y-%m-%d %I:%M:%S %p'),
                 T2 = parse_date_time(c("2020-05-02 04:00:00 AM","2020-05-02 04:00:00 AM"), '%Y-%m-%d %I:%M:%S %p'))

df2 <- df1 %>% mutate(TimeElapsedDays = difftime(df1$T2, df1$T1, units = c("hours")))

> df2
                   T1                  T2 TimeElapsedDays
1 2020-05-01 21:00:00 2020-05-02 04:00:00         7 hours
2                <NA> 2020-05-02 04:00:00        NA hours
df2 <- na.omit(df2)
df2
> df2
                   T1                  T2 TimeElapsedDays
1 2020-05-01 21:00:00 2020-05-02 04:00:00         7 hours