R语言如何基于多条件为情侣行为数据集创建4水平新分类变量
解决方案
你需要的四分类变量可以通过以下三种常用方法实现,均适配你的数据场景:
方法1:算术计算(最简洁,效率最高)
利用你给定的分类规则刚好匹配二进制加权计算结果,直接通过算术运算生成新变量:
# 基础R语法,假设你的数据集名为df df$new_var <- df$IPAsum_totalMd + 2 * df$IPAsum_totalPd
计算逻辑对应关系:
- 双方都为0:
0 + 2*0 = 0 - 仅女性为1:
1 + 2*0 = 1 - 仅男性为1:
0 + 2*1 = 2 - 双方都为1:
1 + 2*1 = 3
方法2:嵌套ifelse(逻辑直观,适合新手核对)
df$new_var <- ifelse( df$IPAsum_totalMd == 1 & df$IPAsum_totalPd == 1, 3, ifelse(df$IPAsum_totalMd == 1, 1, ifelse(df$IPAsum_totalPd == 1, 2, 0)) )
方法3:dplyr::case_when(可读性最高,易调整规则)
如果你使用tidyverse生态处理数据,可使用case_when语法逐一定义分类规则:
library(dplyr) df <- df %>% mutate(new_var = case_when( IPAsum_totalMd == 0 & IPAsum_totalPd == 0 ~ 0, IPAsum_totalMd == 1 & IPAsum_totalPd == 0 ~ 1, IPAsum_totalMd == 0 & IPAsum_totalPd == 1 ~ 2, IPAsum_totalMd == 1 & IPAsum_totalPd == 1 ~ 3 ))
结果验证
生成新变量后可通过交叉表核对分类是否符合预期:
table(df$IPAsum_totalMd, df$IPAsum_totalPd, df$new_var)
你给出的6条示例数据运行后,得到的new_var取值依次为3、0、1、2、0、3,完全符合需求。
内容的提问来源于stack exchange,提问作者Karina
相关产品推荐
相关产品推荐

