R语言中基于3个变量的取值相等条件创建新变量的方法
R中按A/C/S列匹配规则生成
Same标识变量的实现方法 - 适用场景:样本量n=500的结构化数据框,无需复杂循环,直接用R原生向量化运算即可高效完成计算,以下假设你的数据集对象名为
df。
方法1:dplyr实现(代码可读性高,推荐)
需要先安装加载dplyr包(属于tidyverse数据处理生态,日常数据处理常用),核心用case_when按优先级逐行判断匹配规则:
# 首次使用先运行安装命令:install.packages("dplyr") library(dplyr) df <- df %>% mutate( Same = case_when( # 三列完全相等 A == C & C == S ~ "all", # 仅A、C相等 A == C & A != S ~ "ac", # 仅A、S相等 A == S & A != C ~ "as", # 其余情况即三列全不相等 TRUE ~ "none" ) )
方法2:Base R实现(无需安装额外依赖包)
用R自带的嵌套ifelse实现相同逻辑,不需要加载第三方包:
df$Same <- with(df, ifelse(A == C & C == S, "all", ifelse(A == C & A != S, "ac", ifelse(A == S & A != C, "as", "none") ) ) )
注意:如果你的A/C/S列存在缺失值NA,可以在判断条件里补充
!is.na(A) & !is.na(C) & !is.na(S)的前置判断,避免返回NA结果;无缺失值的完整数据集直接运行上述代码即可,运行后输出的Same列取值完全匹配你给出的预期规则。
内容的提问来源于stack exchange,提问作者teresa
相关产品推荐
相关产品推荐

