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

在R语言中从County_and_Quarter列提取年份并新增列的问题

从County_and_Quarter列提取年份的解决方案

核心问题分析

你之前的代码只针对单个年份判断,当新增2014的判断时,如果直接替换或顺序错误,会导致已匹配的2013值被覆盖。更高效的方式是直接提取字符串中的四位年份,而非逐个判断。

推荐方法:正则表达式提取(简洁通用)

利用stringr包的str_extract函数,通过正则匹配连续四位数字(对应年份格式),一次性提取所有年份:

library(dplyr)
library(stringr)

PA_State_County_Level_Sentencing_with_Year <- PA_State_County_Level_Sentencing %>%
  mutate(Year = str_extract(County_and_Quarter, "\\d{4}"))
  • \\d{4}是正则表达式,专门匹配连续四位数字,完美适配你的年份格式,不管是2013、2014还是其他年份都能准确提取。

备选方法:嵌套if_else(仅作参考)

如果必须使用条件判断,需要通过嵌套if_else确保每个年份的判断逻辑不冲突:

PA_State_County_Level_Sentencing_with_Year <- PA_State_County_Level_Sentencing %>%
  mutate(Year = if_else(str_detect(County_and_Quarter, "2013"), 
                        "2013",
                        if_else(str_detect(County_and_Quarter, "2014"), 
                                "2014",
                                # 可继续添加其他年份判断,或用正则兜底提取剩余年份
                                str_extract(County_and_Quarter, "\\d{4}"))))

注意:这种方法扩展性差,新增年份时需不断嵌套,不如正则表达式简洁。

结果验证

提取完成后,可通过以下命令确认年份提取是否正确:

table(PA_State_County_Level_Sentencing_with_Year$Year)

内容的提问来源于stack exchange,提问作者c.ferguson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:40