You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R清理dataframe中混乱的日期格式并提取年份

R实现多格式日期列提取首年份方案

核心思路

所有目标年份均为4位连续数值,无需适配各类日期格式,直接提取每个单元格中第一个出现的4位连续数字即可,空值、NA值保留原有状态。

注意:示例数据中第9行的NA为字符串格式,可先转为R原生缺失值再做处理,结果更符合预期。

方法1:base R实现

# 先将字符串"NA"转为原生缺失值
df$Date[df$Date == "NA"] <- NA_character_
# 正则匹配提取第一个4位数字
df$year <- sub(".*?(\\d{4}).*", "\\1", df$Date)
# 如需转为数值型可执行下行
# df$year <- as.integer(df$year)

方法2:tidyverse实现(可读性更高)

library(dplyr)
library(stringr)

df <- df %>%
  # 先处理字符串NA
  mutate(Date = na_if(Date, "NA")) %>%
  # 提取第一个4位数字,空字符串保留为空
  mutate(year = case_when(
    Date == "" ~ "",
    TRUE ~ str_extract(Date, "\\d{4}")
  ))

执行以上代码后得到的结果完全匹配预期输出。

内容的提问来源于stack exchange,提问作者Ridwan Shittu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:24:03