R语言解析dd/mm/yyy hh:min:sec日期并按日分组的问题
解决as.Date()解析dd/mm/yyyy格式日期错误的问题
别担心,这个问题很常见,主要是因为你没给as.Date()明确指定输入的日期格式,导致它自动识别出错了。下面给你两种简单的解决方法:
方法一:用Base R的as.Date()指定format参数
as.Date()默认的解析格式是%Y-%m-%d(年-月-日),而你的数据是dd/mm/yyyy(日/月/年),所以必须手动指定format参数告诉它怎么解析:
# 假设你的数据列名为date_times date_times <- c("17/4/2018 02:00:00", "17/4/2018 02:15:00", "17/4/2018 02:30:00") # 如果只需要提取日期部分,用这个: formatted_dates <- as.Date(date_times, format = "%d/%m/%Y") # 输出结果:"2018-04-17" "2018-04-17" "2018-04-17"
这里的格式符含义:
%d:两位数字的日期(比如17)%m:两位数字的月份(比如04)%Y:四位数字的年份(比如2018)
如果需要保留时间部分,你可以用strptime()或者直接用方法二。
方法二:用lubridate包简化解析
如果你经常处理日期时间,推荐用lubridate包,它的函数命名非常直观,比如dmy_hms()专门用来解析日/月/年 时:分:秒格式的字符串:
library(lubridate) # 解析完整的日期时间 full_datetimes <- dmy_hms(date_times) # 输出结果:"2018-04-17 02:00:00 UTC" "2018-04-17 02:15:00 UTC" "2018-04-17 02:30:00 UTC" # 如果只需要日期,直接用dmy() just_dates <- dmy(date_times)
你之前尝试的order=dmy是用错了参数——as.Date()根本没有这个参数,这可能是混淆了其他函数的用法。用上面的两种方法就能轻松解决你的问题啦!
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

