R语言如何将数据框字符型日期替换为标准日期格式
问题原因
- 管道操作流程中,你还未完成
df2的最终赋值就调用df2$Date,此时R读取的是环境中已存在的旧df2对象,并非当前管道内正在处理的数据 replace()函数参数不符合要求:第一个参数为待修改的向量,第二个参数为要替换的位置索引,你直接传入列作为第二个参数会触发语法错误- 原有代码中
mutate(Date = substr(Date, 10, 18))逻辑错误:如果你的Date列已经是Aug 2019这类长度仅为8的字符串,截取10-18位会返回空值,自然无法解析为日期。如果是要从文件名提取日期,应该操作File列而非Date列。
解决方法
直接在mutate内嵌套日期解析函数即可,无需额外调用replace,示例代码如下:
library(dplyr) library(lubridate) # 从File列提取日期+转格式一步完成 df2 <- head(df, 4) %>% mutate( Date = substr(File, 44, 51), # 从源文件名提取日期字符串 Date = parse_date_time(Date, orders = "bY") # 直接转成标准日期格式 )
parse_date_time会自动给无具体日的年月数据补1号作为默认值,完全符合你生成时间序列的需求。
如果后续用ggplot做图需要X轴仅展示月/年,可直接在坐标轴配置中指定格式:
library(ggplot2) ggplot(df2, aes(x = Date, y = 你的数值列)) + geom_line() + scale_x_datetime(date_labels = "%m/%Y", date_breaks = "1 month")
内容的提问来源于stack exchange,提问作者adjectivedave
相关产品推荐
相关产品推荐

