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

dpplyr教程:如何检查一个变量的值是否包含在另一个变量中

解决方案

你的核心问题是误用了get()函数——它是用来获取变量名对应的对象,而非提取数据框列中的字符串值。直接用state_name列本身作为匹配模式即可,下面提供几种可行的实现方式:

方法1:用tidyverse生态的stringr::str_detect(推荐)

结合rowwise()让dplyr逐行处理,str_detect可以直接接收每行的state_name作为匹配规则:

library(dplyr)
library(stringr)

df2 <- df %>%
  rowwise() %>%
  mutate(type_state = ifelse(str_detect(jurisd_name, state_name), 1, 0)) %>%
  ungroup()

处理完记得用ungroup()取消逐行分组状态,避免影响后续数据操作。

方法2:用base R的mapply实现逐元素匹配

mapply会把state_name和jurisd_name的对应元素配对传入grepl,正好满足逐行匹配的需求:

df2 <- df %>%
  mutate(type_state = as.integer(mapply(grepl, pattern = state_name, x = jurisd_name)))

as.integer()将grepl返回的逻辑值(TRUE/FALSE)转换为1/0。

方法3:用Vectorize包装grepl

把原本不支持逐元素配对的grepl转成支持向量化输入的函数:

vec_grepl <- Vectorize(grepl)
df2 <- df %>%
  mutate(type_state = as.integer(vec_grepl(state_name, jurisd_name)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:40:10