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

R语言如何使用县名列表检索描述列中含指定县名的行

原有代码错误说明

  1. %in%是精确匹配运算符,只有当Description的完整内容和县名字段的某一值完全相等时才会返回TRUE,而你的县名是嵌入在长文本中的,因此无法命中。
  2. apply行循环中调用了全量的Df$Description,相当于每一行计算时都在判断整个数据集的描述列是否匹配,输出结果必然不符合预期。

解决方案

使用字符串正则匹配的方式批量检测,用tidyverse的stringr库函数实现最简便,运行效率高,1000行数据集耗时几乎可以忽略:

# 加载依赖,已安装加载过可跳过
library(tidyverse)

# 拼接所有县名为正则或模式,fixed()避免县名含特殊字符干扰匹配
county_match_rule <- str_c(Carolina.Counties$county, collapse = "|") %>% fixed()

# 新增标记字段,匹配到县名则为yes,否则为no
df <- df %>%
  mutate(has_specified_county = if_else(str_detect(Description, county_match_rule), "yes", "no"))

如果需要同时提取出匹配到的具体县名,可以再加一个字段:

df <- df %>%
  mutate(
    has_specified_county = if_else(str_detect(Description, county_match_rule), "yes", "no"),
    matched_county_name = str_extract(Description, county_match_rule)
  )

补充说明

如果你的描述字段和县名的大小写不统一,可以把匹配规则改成不区分大小写的正则模式:

county_match_rule <- regex(str_c(Carolina.Counties$county, collapse = "|"), ignore_case = TRUE)

用你提供的示例数据测试,输出结果如下:

# A tibble: 3 × 4
  `Donor Type`       Amount Description               has_specified_county
  <chr>              <chr>  <chr>                     <chr>               
1 Single Donation    10     This is for Person County yes                 
2 Grant              50     Books for Beaufort County yes                 
3 Recurring Donation 100    Brews for Books           no 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:03