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

R语言中如何判断ID字符串包含1或2并生成对应新变量

R字符串匹配生成新变量问题修复

错误原因

你编写的代码使用%in%做完全值匹配,仅当ID列的整行内容完全等于数字1/2时才会触发匹配逻辑,但你的ID列是带前缀字母的字符串,无法命中匹配规则,因此全部返回NA。

修复方案

基础R实现

直接用grepl()函数做子串匹配即可:

Fixations$test <- ifelse(grepl("1", Fixations$ID), "1",
                         ifelse(grepl("2", Fixations$ID), "2", NA))
  • grepl("模式", 待检测向量)会逐行检测向量中的元素是否包含指定子串,匹配返回TRUE,否则返回FALSE,刚好适配ifelse的判断条件
  • 如果存在ID同时包含1和2的情况,上述代码会优先返回"1",调整判断顺序即可修改优先级

tidyverse/dplyr实现(可选)

如果使用tidyverse生态,用case_when写多层判断逻辑更清晰,避免嵌套ifelse:

library(dplyr)
Fixations <- Fixations %>%
  mutate(test = case_when(
    grepl("1", ID) ~ "1",
    grepl("2", ID) ~ "2",
    .default = NA_character_
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:57:05