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

在R中为多值分隔的语言变量生成英语标识0/1哑变量

R语言多值分隔列生成英文标识列解决方案

你之前使用model.matrix的方法不适用该场景,因为model.matrix会将language_spoken列的每一个完整字符串作为独立分类水平生成哑变量,不会单独匹配字符串中是否包含Eng子串,因此无法得到预期结果。


前置示例数据集构造

data <- data.frame(language_spoken = c("Jap;Fre","Jap;Fre","Fre;Ch","Eng","Eng;Jap","Hindi;Eng","","Eng;Spanish;Fre","Spanish;Jap","Spanish"))

方案1:基础R实现

核心用grepl函数做字符串模式匹配,将返回的逻辑值直接转为整数即可得到0/1标识:

data$Eng <- as.integer(grepl("Eng", data$language_spoken))

方案2:tidyverse生态实现

如果习惯用dplyr和stringr处理数据,可以用以下写法:

library(dplyr)
library(stringr)
data <- data %>%
  mutate(Eng = as.integer(str_detect(language_spoken, "Eng")))

最终处理结果

运行上述任意一种方案后,得到的数据框和预期完全一致:

language_spoken Eng
1         Jap;Fre   0
2         Jap;Fre   0
3          Fre;Ch   0
4             Eng   1
5         Eng;Jap   1
6       Hindi;Eng   1
7                   0
8 Eng;Spanish;Fre   1
9      Spanish;Jap   0
10        Spanish   0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:12:02