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

如何从R语言数据框的GEOID列提取字母U后的内容生成新列?

在R语言中提取GEOID列中字母U后的数值并创建新列

针对你的需求,这里提供几种高效的实现方法,都能得到你想要的结果:

方法1:修正你已有的word()函数写法

你已经用到了stringr和dplyr,只需要明确word()函数的参数即可:

library(stringr)
library(dplyr)

desired_df <- df %>%
  mutate(GEOID_Final = word(GEOID, 2, sep = fixed("US")))
  • word(GEOID, 2, sep = fixed("US"))表示将GEOID列的字符串按固定分隔符"US"拆分,取拆分后的第2个部分,也就是US之后的数值内容。

方法2:使用str_split_fixed()拆分字符串

这种方法更直观地将字符串拆分为固定数量的部分:

library(stringr)
library(dplyr)

desired_df <- df %>%
  mutate(GEOID_Final = str_split_fixed(GEOID, "US", n = 2)[, 2])
  • str_split_fixed()会将每个字符串拆分成2列,[,2]用来提取拆分后的第二列内容。

方法3:使用str_extract()正则匹配

通过正则表达式的正向预查,直接提取US之后的所有字符:

library(stringr)
library(dplyr)

desired_df <- df %>%
  mutate(GEOID_Final = str_extract(GEOID, "(?<=US).*"))
  • (?<=US)是正向预查,代表匹配US之后的位置,.*表示匹配后续所有字符。

方法4:Base R原生方法(无需额外包)

如果不想加载第三方包,直接用Base R的sub()函数即可:

df$GEOID_Final <- sub(".*US", "", df$GEOID)
desired_df <- df
  • sub(".*US", "", df$GEOID)表示将每个字符串中US及之前的所有内容替换为空,剩下的就是目标数值。

以上所有方法运行后,得到的desired_df都和你给出的期望输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:20