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

如何在R语言中基于多列变量生成符合指定规则的新变量x

在R中生成符合特定规则的变量x

先定义原始数据:

a = c(1,0,0,NA,0,1)
b = c(0,1,0,NA,NA,0)
c = c(0,1,0,NA,NA,NA)
df <- cbind(a, b, c)

需要生成变量x,规则如下:

  • 只要a/b/c任意一列是1,x为1
  • 当三列无1时:
    • 若所有值都是0(无缺失),x为0
    • 若存在缺失值(包括全缺失),x为NA

期望输出:

df
      a  b  c  x
[1,]  1  0  0  1
[2,]  0  1  1  1
[3,]  0  0  0  0
[4,] NA NA NA NA
[5,]  0 NA NA NA
[6,]  1  0 NA  1

解决方法

可以用apply逐行处理,结合逻辑判断实现:

x <- apply(df, 1, function(row) {
  # 检查是否存在1
  if (any(row == 1, na.rm = TRUE)) {
    1
  } else {
    # 确认所有非缺失值都是0
    all_zero <- all(row == 0, na.rm = TRUE)
    # 检查是否有缺失
    has_na <- any(is.na(row))
    if (all_zero && !has_na) {
      0
    } else {
      NA
    }
  }
})

# 把x合并到原数据中
df <- cbind(df, x)

运行这段代码后,就能得到符合要求的x变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:09:23