【问题标题】:How to read in excel file when Date and Time in the same column in R当日期和时间在R中的同一列中时如何读取excel文件
【发布时间】:2020-03-04 15:27:09
【问题描述】:

我正在尝试将 excel 文件读入 R。在其他字段中,excel 文件有两个“日期”字段,每个字段都包含相同字段中的日期和时间戳。

例子:

StartDate 9/14/2019 10:18:59 AM
EndDate 9/18/2019 2:27:14 AM

当我尝试 read_excel 读取 excel 文件时,数据框将这两列格式化得很奇怪。它吐出天数(带小数)。例如 43712.429849537039,我认为是从 Jan-01-1970 的几天(当我输入 lubrudate::origin 时弹出的原始日期)。

data %<>%    
  mutate(StartDate = as.Date(StartDate, origin = "1970-01-01 UTC"))

所以我尝试使用 as.Date 将其转换回来,但它会将其转换为完全错误的日期...(将所有日期转换为 2089 年)。例如,2089-09-05。

对此的任何帮助将不胜感激!必须有更简单的方法直接读取日期时间列?!

【问题讨论】:

  • 如果是 windows 文件,则来源是 1899 年 12 月 30 日。
  • “SAME 字段中的日期和时间戳” ...有些人(像我一样)会争辩说这是完全正常的,并且正确地标记为“时间戳” .我很少处理希望将日期和时间作为单独对象保存的数据。 (但这只是我。)

标签: r date datetime as.date


【解决方案1】:

你可以使用 lubridate 包,非常棒:

library(tidyverse)

df  <- data.frame(StartDate  =c("9/14/2019 10:18:59 AM","9/14/2019 3:18:59 PM"), 
                  EndDate= c("9/18/2019 2:27:14 AM","9/18/2019 1:27:14 PM"))


df <- df %>% mutate(StartDate = lubridate::mdy_hms(StartDate), EndDate = lubridate::mdy_hms(EndDate))

【讨论】:

  • 感谢您的回复!我的问题是,一旦我将 excel 文件读入 R,开始日期就不再是 mm/dd/Y 格式。它需要天数或类似的东西......所以我读过的日期框架中的开始日期是:43712.429849537039。
  • 如果您使用read_excel 导入数据,您可以使用col_types 参数将StartDate 和EndDate 变量作为字符导入。这样你就可以像@DerekCorcoran 所说的那样使用lubridate
【解决方案2】:

事实证明,excel 的“起始日期”与 R 不同。Excels 从 01-01-1900 开始计算天数,而 R 从 01-01-1970 开始计算天数。

当我使用 read_excel 将文件读入 df 时,R 使用了 excels 的天数。这就是为什么当我尝试使用 1970 年转换为日期格式时得到一个奇怪的日期。只要我使用 as.Date 和 1990 年的“原始”日期(Excel 原始日期),我的日期就正确解析了!

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    相关资源
    最近更新 更多