R语言 如何使用`dmy`函数将多个变量(字符)转换为dmy格式?

vohkndzv  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(123)

假设我有这个df(但要大得多)

library(lubridate)

df = data.frame(id=1:5,date1 = c("2023/01/02","2023/08/03","2023/09/09","2023/11/05","2023/04/03"),
                date2 = c("2023/02/02","2023/09/03","2023/10/09","2023/12/05","2023/05/03"))

我尝试使用lapplylubridate库的dmy函数,但它不工作,我不知道为什么。

dd = colnames(df[,-1])

df[dd] = lapply(df[dd],dmy)

并且输出是

Warning messages:
1: All formats failed to parse. No formats found. 
2: All formats failed to parse. No formats found.
2w2cym1i

2w2cym1i1#

我认为应该使用ymd而不是dmy,因为日期字符串的格式是%Y/%m/%d

> df %>%
+     mutate_if(is.character, ymd)
  id      date1      date2
1  1 2023-01-02 2023-02-02
2  2 2023-08-03 2023-09-03
3  3 2023-09-09 2023-10-09
4  4 2023-11-05 2023-12-05
5  5 2023-04-03 2023-05-03

如果您确实希望日期以dmy显示,可以尝试

> df %>%
+     mutate_if(is.character, ~ format(ymd(.x), "%d/%m/%Y"))
  id      date1      date2
1  1 02/01/2023 02/02/2023
2  2 03/08/2023 03/09/2023
3  3 09/09/2023 09/10/2023
4  4 05/11/2023 05/12/2023
5  5 03/04/2023 03/05/2023

相关问题