【问题标题】:change multiple dates formatting in R更改 R 中的多个日期格式
【发布时间】:2021-11-28 07:24:06
【问题描述】:

我正在尝试将日期格式应用于数据集中的现有日期列。

我尝试使用跨函数来更改日期格式,但没有成功。我不想创建新列,而是更改现有列中的格式。

下面的例子,

doc_dt <- c('04/22/2021 00:00:00', '05/15/2021 00:00:00')
ship_dt <- c('04/24/2021 00:00:00', '05/18/2021 00:00:00')
qty <- c(10, 20)

df_dt <- data.frame(doc_dt,ship_dt, qty)

col_dt <- c('doc_dt','ship_dt')

format_dt <- df_dt %>%
mutate(
across(col_dt, ~ format(as.POSIXct(.x, format="%m/%d/%Y %H:%M:%S"),"%Y-%m-%d"))
)

【问题讨论】:

  • 对我来说似乎工作正常。当您运行上述代码时,您得到的输出是什么?您期望什么?
  • 运行这些代码行后,我没有看到更改的格式。奇怪...我希望 mutate 和 cross 函数将格式从“%m/%d/%Y %H:%M:%S”更改为简单的“%Y-%m-%d”提供的列
  • 是的,这就是我运行代码时得到的结果。我希望您检查的是 format_dt 而不是 df_dt 中的输出。
  • 我正在检查 format_dt ,不知道为什么我没有得到所需的输出......任何自定义函数来完成这个?我想要应用相同格式的日期列太多...
  • 它现在也向我展示了想要的结果!我必须在函数dplyr::across 之前显式添加包名称 - 可能是一些包冲突左右。感谢您的帮助

标签: r date formatting


【解决方案1】:

另一种方法是使用lubridate 函数。

library(dplyr)
library(lubridate)

result <- df_dt %>% mutate(across(all_of(col_dt), ~ as.Date(mdy_hms(.))))
result

#      doc_dt    ship_dt qty
#1 2021-04-22 2021-04-24  10
#2 2021-05-15 2021-05-18  20

str(result)

#'data.frame':  2 obs. of  3 variables:
# $ doc_dt : Date, format: "2021-04-22" "2021-05-15"
# $ ship_dt: Date, format: "2021-04-24" "2021-05-18"
# $ qty    : num  10 20

【讨论】:

    【解决方案2】:

    我们可以直接从base R使用as.Date

    library(dplyr)
    result <- df_dt %>% 
        mutate(across(all_of(col_dt), ~ as.Date(doc_dt, "%m/%d/%Y %T")))
    result
          doc_dt    ship_dt qty
    1 2021-04-22 2021-04-22  10
    2 2021-05-15 2021-05-15  20
    

    【讨论】:

      【解决方案3】:

      我们可以直接使用 lubridate 包中的mdy_hms

      library(dplyr)
      library(lubridate)
      df_dt %>% 
        mutate(across(contains("dt"),mdy_hms))
      
            doc_dt    ship_dt qty
      1 2021-04-22 2021-04-24  10
      2 2021-05-15 2021-05-18  20
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-03
        • 2015-03-03
        • 2011-11-18
        • 1970-01-01
        • 2021-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多