R语言如何简化recode重复赋值操作并用ifelse实现分组重编码
你可以先将所有需要重编码为1的value取值整理为一个向量,再用%in%运算符配合ifelse完成判断,代码如下:
library(tidyverse) # 示例数据 data <- data.frame(id=c(1,2,3,4,5,6,7,8,9,10,11,12,13), value=c("1c","3d", "1e","1f","1g", "4h", "1j", "2f", "2c", "2d", "2j", "2e", "5i")) # 预先定义需要重编码为1的所有value取值 group1_values <- c("1c","3d","1e","1f","1g","4h","1j","2d","2j") # 重编码逻辑 data <- data %>% mutate(category = ifelse(value %in% group1_values, 1, 2))
如果不需要单独维护分组列表,也可以直接把取值向量写在ifelse的判断条件中:
data %>% mutate(category = ifelse(value %in% c("1c","3d","1e","1f","1g","4h","1j","2d","2j"), 1, 2))
以上代码的输出结果和你原有recode写法的结果完全一致,后续调整分组规则时只需要修改向量内的取值即可,不需要逐个修改赋值逻辑,大幅减少冗余代码。
内容的提问来源于stack exchange,提问作者berehan
相关产品推荐
相关产品推荐

