【问题标题】:Parsing date and time from xlsx import从 xlsx 导入解析日期和时间
【发布时间】:2020-06-18 17:47:55
【问题描述】:

我在 excel 中有一列日期,格式如下:MM/DD/YY AM 或 MM/DD/YY PM,并且在使用 readxl::read_excel 导入后能够解析此日期。

parse_date_time(x, '%m/%d/%y %p', tz = "UTC")

现在,如果我想引入 MM/DD/YY HH:MM PM,则导入以数字形式出现。例如。

"3/16/20 3:00 PM" becomes 43906.625 after import.

一种解决方案是将日期列作为字符串导入,但是,我在文件中有 50 列,并且不想对每种列类型进行硬编码。有没有办法从这个数值中获取日期和时间(即 43906.625)?

【问题讨论】:

    标签: r date


    【解决方案1】:

    Excel 使用“日整数”格式。 R 使用“seconds-integer”表示时间,“day-integer”表示Date,因此根据您要转换的类,您需要适应一天的秒数(86,400)。值得一提的是,Excel 使用 1899 年(年份)的“原点”。

    as.POSIXct(43906.625 * 86400, origin = "1899-12-30", tz = "UTC")
    # [1] "2020-03-16 15:00:00 UTC"
    

    作为一点历史:它是 "1899-12-30" 而不是 "1899-12-31"(一天结束?)或其他内容的原因在 2013 年的博客文章中提到:

    对于 Windows 上的 Excel,1900 年之后的日期的起始日期是 1899 年 12 月 30 日。(Excel 的设计者认为 1900 年是闰年,但事实并非如此。)对于 Mac 上的 Excel,起始日期是 1904 年 1 月 1 日.

    我不知道这方面的规范参考,并且 R-Bloggers 借用/抄袭该文章的网站没有响应。对于这个断言(工程师错误地识别了闰年),我更希望有仍然有效且更规范的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      相关资源
      最近更新 更多