【问题标题】:Retain date format in R在 R 中保留日期格式
【发布时间】:2020-03-12 00:25:16
【问题描述】:

我有一个数据集,其中包含一些员工的姓名、日期、数量和工作小时数。示例数据集如下所示:

| Name    | Date | Amount | 10/1/2018 | 10/2/2018 | 10/3/2018 | 10/4/2018 | 10/5/2018 |
|---------|:----:|------:|-----------|-----------|-----------|-----------|-----------|
| Mike    |      |    50 | -         | -         | -         | -         | -         |
| Mike    |      |   167 | -         | -         | -         | -         | 8.0       |
| Mike    |      |   560 | -         | -         | -         | 8.0       | -         |
| Kristie |      | 467   | -         | -         | -         | -         | -         |
| Kristie |      | 900   | -         | -         | -         | -         | -         |
| Kristie |      | 65    | -         | -         | -         | -         | -         |
| Kristie |      | 90    | -         | -         | -         | -         | -         |
| Kristie |      | 665   | -         | -         | -         | -         | -         |
| Kristie |      | 864   | -         | -         | -         | -         | -         |
| Joe     |      | 566   | -         | -         | -         | -         | -         |
| Joe     |      | 676   | -         | -         | -         | -         | -         |
| Joe     |      | 40    | 8.0       | -         | -         | -         | -         |
| Joe     |      | 45    | -         | -         | -         | -         | -         |

可以看到,日期列中的值是空白的,并且在列中解析。每天的日期范围从 2018 年 10 月 1 日到 2019 年 11 月 31 日。所以每个月的每个日期都出现在列中。如上例所示,这些日期的值在某些地方是“8”。该值表示工作小时数。当我在 R 中上传这个 excel 文件时,日期被转换为字符,例如,“10/01/2018”将被转换为“43374”,其他日期也是如此。如何确保这些日期保留其原始格式?

【问题讨论】:

  • 您是以 CSV 格式还是 Excel 电子表格保存数据? Excel 不能很好地处理数据。有existing answers about converting excel date values to proper date values in R。但 Excel 从一开始就不容易保持正确的值。
  • @MrFlick 该文件是一个 Excel 电子表格。这里的问题是日期分散在列中,并且在没有工作小时数的情况下填充了值。
  • 你如何将文件读入 R,使用 read.csv 或类似 readxl::read_xlsx 的东西?
  • @MarcusA。我正在使用 read_excel 来读取文件

标签: r date data-conversion


【解决方案1】:

Windows 上的 Excel(而不是 Mac 上的 Excel)使用 1899 年 12 月 30 日的原点并计算此后的天数。要转换日期数字,请使用:

(daycount <- as.numeric("43374"))
# [1] 43374
(dayYMD <- as.Date(daycount, origin="1899-12-30"))
# [1] "2018-10-01"
(dayMDY <- format(dayYMD, "%m/%d/%Y"))
# [1] "10/01/2018"

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 2021-11-22
    • 1970-01-01
    • 2017-08-10
    • 2019-07-28
    • 2016-03-11
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    相关资源
    最近更新 更多