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

如何在R中检测数值变量是否含指定数字并生成二分类变量

问题:检测数值变量中是否存在特定数字并生成标记变量

已知如何用gsub或grep提取数值变量的首尾数字,但需要实现:检测数值变量的任意位置是否存在特定数字(例如数字3),并生成新变量——存在则标记为1,不存在则标记为0。

示例输入数据框

have <- as.data.frame(structure(list(Q14=structure(c(13, 3, 788, 134, 56,  3214, 1036 )))))

期望输出数据框(新增Q14_3列)

want <- as.data.frame(structure(list(Q14=structure(c(13, 3, 788, 134, 56,  3214, 1036 )),
                                      Q14_3=structure(c(1, 1, 0, 1, 0, 1, 1)))))

解决方案

方法1:基础R实现(grepl函数)

使用grepl函数检测字符串中是否包含目标字符,再将逻辑结果转换为整数(TRUE转1,FALSE转0),代码简洁高效:

# 生成标记变量
have$Q14_3 <- as.integer(grepl("3", have$Q14))

方法2:使用stringr包(更直观的字符串操作)

如果你习惯用tidyverse生态的工具,stringr包的str_detect函数语义更清晰:

library(stringr)
# 生成标记变量
have$Q14_3 <- as.integer(str_detect(have$Q14, "3"))

验证结果

执行上述代码后,可通过以下代码确认结果与预期一致:

all.equal(have, want)
# 输出:TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:52:04