在R语言中将带时间的D/M/Y格式日期转换为YYYY-MM-DD格式
解决方案
基础R实现
直接使用as.Date()函数,通过format参数指定输入的日期格式为日/月/两位年份(对应格式符%d/%m/%y),函数会自动忽略字符串中的时间部分:
example <- as.data.frame(c('1/3/23 20:00')) colnames(example)[1] <- 'Time' # 转换为日期格式 example$Date <- as.Date(example$Time, format = "%d/%m/%y") # 查看结果 example$Date # 输出:[1] "2023-03-01"
格式符说明:
%d:匹配日期(1-31,一位或两位数字都能识别)%m:匹配月份(1-12,一位或两位数字都能识别)%y:匹配两位年份(如"23"会自动解析为2023)
使用lubridate包简化操作
如果习惯用lubridate包(首次使用需先安装),可以用专门的日期时间解析函数匹配格式,再提取日期部分:
# 首次使用时安装包 install.packages("lubridate") library(lubridate) example <- as.data.frame(c('1/3/23 20:00')) colnames(example)[1] <- 'Time' # 先解析为带时间的日期类型,再提取纯日期 example$Date <- date(dmy_hm(example$Time)) # 查看结果 example$Date # 输出:[1] "2023-03-01"
这里dmy_hm()会自动识别日-月-年 时-分的格式,date()函数则从完整的日期时间对象中提取纯日期部分。
内容的提问来源于stack exchange,提问作者jo_
相关产品推荐
相关产品推荐

