You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:44:49