【发布时间】:2021-02-10 23:16:43
【问题描述】:
我收到了一个我想在 R 中分析的 CSV 文件,但我遇到了一个我以前从未遇到过的日期列问题。
在 Excel 中打开文件时,给定日期在单元格中显示为 22.12.2020 00:00,在编辑栏中显示为 22.12.2020 00:00:00。当使用 dplyr::read_csv2 读入 R 时,它被读入带有类字符的“22.12.2020 00:00”。当我尝试使用 lubridate::as_date 或 lubridate::as_datetime 将列转换为日期时间时,我分别得到 2022-12-20 和 2022-12-20 20:00:00。我猜这一定是由于初始字符串中缺少秒数。在进行转换之前,我尝试将“:00”添加到字符串的末尾,但这只会导致 NA。谁能告诉我如何解决这个问题?
test4 <- structure(list(ORDER_STATUS_DATE = 20201222, DAY = "22.12.2020 00:00"), row.names = c(NA,
-1L), class = c("tbl_df", "tbl", "data.frame"))
test4 %>%
mutate(DAY = as_datetime(DAY))
# Returns 2022-12-20 20:00:00 but should ideally have returned 2022-12-22 00:00:00
test4 %>%
mutate(DAY = as_date(DAY))
# Returns 2022-12-20
test4 %>%
mutate(DAY = DAY %>% paste0(":00:00"))
# Returns 22.12.2020 00:00:00:00 so converting to date or datetime leads to NAs
【问题讨论】:
-
你的 MRE 中的 ORDER_STATUS_DATE 是数字,但在你写的问题中你得到了一个字符串......
-
这是我试图纠正的 DAY 列。
-
哦,我没有仔细阅读。对不起
-
我应该在文本中指定它,而不仅仅是在代码中。我的错。