如何从yyyymmdd格式日期提取年份?R语言parse_date_time代码失效求助
处理yyyymmdd格式日期提取年份的解决方案
方法一:直接提取前4位(高效,无需转日期)
如果你的日期列是字符型(如 "20220310"),直接截取前4个字符即可:
df <- df %>% mutate(across(contains("Date"), ~substr(., 1, 4)))
如果是数值型(如 20220310),先转字符再截取:
df <- df %>% mutate(across(contains("Date"), ~substr(as.character(.), 1, 4)))
方法二:转日期后提取年份(适合需后续日期操作的场景)
你的原代码问题在于没有直接提取年份,且parse_date_time对数值型日期处理容易出错。改用lubridate包的工具一步到位:
library(lubridate) df <- df %>% mutate(across(contains("Date"), ~year(ymd(.))))
ymd()可以自动识别字符/数值型的yyyymmdd格式,year()直接提取年份,无需拆分多列再删除。
内容的提问来源于stack exchange,提问作者Robbert
相关产品推荐
相关产品推荐

