R语言使用嵌套ifelse处理问卷排序题划分受访者类型咨询
问卷排序结果分类的R代码实现优化建议
原嵌套ifelse写法的问题
- 层级过多可读性极差,后续调整规则、新增分类时修改成本极高
- 存在返回值异常的坑:只要任意上层条件不满足,结果会返回
NA而非你预期的0,后续统计时会漏掉这些样本
优化方案
场景1:仅需要判断单种符合条件的情况
直接用逻辑与&拼接所有判断条件,完全不需要嵌套,写法简洁不易出错:
test <- test %>% mutate(Ens_decouv = ifelse( Q75_1_ == "A8" & Q75_2_ == "A9" & Q75_3_ == "A1" & Q75_4_ == "A2" & Q75_5_ == "A7", 1, 0 ))
场景2:需要划分多种类别
用dplyr内置的case_when()函数,比嵌套ifelse的可读性提升数倍,每个规则和对应分类一一对应,调整非常方便:
test <- test %>% mutate( 晨间习惯分类 = case_when( # 规则1:前5位顺序为A8>A9>A1>A2>A7 Q75_1_ == "A8" & Q75_2_ == "A9" & Q75_3_ == "A1" & Q75_4_ == "A2" & Q75_5_ == "A7" ~ "晨间探索型", # 规则2:前3位顺序为A1>A3>A5 Q75_1_ == "A1" & Q75_2_ == "A3" & Q75_3_ == "A5" ~ "效率优先型", # 更多规则直接按上面的格式新增即可 # 所有规则都不匹配的样本归为其他 TRUE ~ "其他类型" ) )
场景3:分类规则数量极多(10条以上)
可以提前把所有规则整理成一个规则表,再通过匹配的方式批量打标签,不用手动写几十条判断条件。
内容的提问来源于stack exchange,提问作者David Potrel
相关产品推荐
相关产品推荐

