Excel数字日期编码(UTC)到日期的转换

时间:2018-09-11 12:57:36

标签: r excel datetime

我似乎找不到答案,我尝试了很多事情-我对R还是很陌生。

我在数据集Old Data中有两个变量

  • Open Date-Excel和
  • 中的num
  • Closed Date-POSIXct,格式:“ 2017-10-11 12:39:37”

我无法让他们为数据集中的每一行减去,转换似乎已关闭

这是我想要做的(没有语法):

Newdata <- Newtime = (Closed Date - Open Date) from Old Data

这是dput(Old Data)的结果:

structure(list(open_date = c(43018, 43018, 43020, 43027), close_date = c("9/9/2018 12:11:11", 
"9/11/2018 13:21:11", "9/1/2018 14:31:41", "9/5/2018 15:44:41"
)), class = "data.frame", row.names = c(NA, -4L))

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用excel_numeric_to_date程序包的janitor函数将数字Excel日期格式转换为Date,然后使用mdy程序包的lubridate函数转换字符字符串输入Date中。然后,您可以按天计算difftime天的时间,如下所示:

library(janitor)
library(lubridate)

df <- structure(list(open_date = c(43018, 43018, 43020, 43027), 
close_date = c("9/9/2018 12:11:11", 
"9/11/2018 13:21:11", "9/1/2018 14:31:41", "9/5/2018 15:44:41"
)), class = "data.frame", row.names = c(NA, -4L))

df$open_date <- excel_numeric_to_date(df$open_date)
df$close_date <- as_date(dmy_hms(df$close_date))
df$new_date_time <- df$close_date - df$open_date
df

输出:

   open_date close_date new_date_time
1 2017-10-10 2018-09-09      334 days
2 2017-10-10 2018-11-09      395 days
3 2017-10-12 2018-01-09       89 days
4 2017-10-19 2018-05-09      202 days