如何使用lubridate的dmy函数批量转换字符型日期变量为dmy格式?
问题原因与解决方案
错误原因
你的日期字符串格式是年/月/日(例如"2023/01/02"),但你调用的dmy()函数是lubridate中专门用于解析日/月/年格式日期的工具,两者格式不匹配,导致所有日期都无法被解析,因此出现警告。
修复方法
将dmy()替换为对应年/月/日格式的ymd()函数即可,修改后的代码如下:
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")) dd = colnames(df[,-1]) df[dd] = lapply(df[dd], ymd)
验证结果
执行str(df)可以看到date1和date2已经被转换为Date类型:
> str(df) 'data.frame': 5 obs. of 3 variables: $ id : int 1 2 3 4 5 $ date1: Date, format: "2023-01-02" "2023-08-03" "2023-09-09" "2023-11-05" ... $ date2: Date, format: "2023-02-02" "2023-09-03" "2023-10-09" "2023-12-05" ...
内容的提问来源于stack exchange,提问作者An116
相关产品推荐
相关产品推荐

