如何将R数据集中的2022M01格式转换为2022/01/01日期格式?
解决R语言中"YYYYMmm"格式日期转"YYYY/MM/DD"的问题
你用lubridate::parse_date_time时参数写错了——这个函数的orders参数不支持%Y这类strftime格式符,而是用简化标记(比如Y代表4位年份,m代表2位月份),中间的非字母分隔符会被自动识别。下面给你几个可行的解决方法:
方法1:修正lubridate的用法
直接用"Ym"作为orders参数,再按需格式化为目标字符串:
library(lubridate) # 转换为日期类型 IPI_ESP$Data <- parse_date_time(IPI_ESP$Data, orders = "Ym") # 格式化为"YYYY/MM/DD"的字符格式(若需保留Date类型可跳过此步) IPI_ESP$Data <- format(IPI_ESP$Data, "%Y/%m/%d")
方法2:替换分隔符后用lubridate的ymd函数
先用stringr替换M为-,再用ymd()自动识别日期(默认补当月第一天):
library(lubridate) library(stringr) IPI_ESP$Data <- ymd(str_replace(IPI_ESP$Data, "M", "-")) # 格式化为目标字符串 IPI_ESP$Data <- format(IPI_ESP$Data, "%Y/%m/%d")
方法3:用base R实现(无需额外包)
用gsub替换M为/,再用as.Date指定格式完成转换:
# 转换为Date类型(自动补日为01) IPI_ESP$Data <- as.Date(gsub("M", "/", IPI_ESP$Data), format = "%Y/%m") # 格式化为目标字符串 IPI_ESP$Data <- format(IPI_ESP$Data, "%Y/%m/%d")
以上三种方法都能将你的Data列转换为2023/02/01这类指定格式的日期。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

