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

R语言按规则基于resp等三个变量生成新变量N1的实现方法

方案1:基础R实现(无需加载额外包)

直接使用嵌套的向量化ifelse()函数完成条件赋值,代码如下:

df$N1 <- ifelse(df$resp > 4, df$exp.1, 
                ifelse(df$resp < 4, df$exp.2, NA))

方案2:dplyr 实现(逻辑更清晰,适合多条件场景)

结合mutate()和case_when()完成变量生成,避免多层ifelse嵌套的可读性问题,代码如下:

library(dplyr)
df <- df %>% 
  mutate(N1 = case_when(
    resp > 4 ~ exp.1,
    resp < 4 ~ exp.2,
    TRUE ~ NA_real_ # 剩余所有情况(即resp==4)赋值为数值型缺失值
  ))

你之前用car::recode没成功是正常的,这个函数仅适合对单个变量的取值做映射重编码,而你需要的是根据一个变量的条件取另外两个变量的值,不属于单变量重编码的适用场景。

运行上述任意一种方案后,输出的df结构与你期望的结果完全一致:

resp exp.1 exp.2  N1
1    1  0.00   1.0 1.0
2    2  0.24   1.0 1.0
3    4  1.00   0.0  NA
4    3  1.50   0.0 0.0
5    5  0.00   0.3 0.0
6    7  0.40   0.2 0.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:54:02