首页 > 解决方案 > Excel 数字日期编码 (UTC) 到日期转换

问题描述

我似乎找不到答案,我尝试了多种方法——我对 R 还是很陌生。

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

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

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

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))

提前致谢!

标签: rexceldatetime

解决方案


您可以使用包的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

推荐阅读