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

在R语言中基于两个二元变量创建或逻辑新变量的方法

问题描述

现有如下数据集:

> dput(test)
structure(list(Apple = c(0L, 1L, 1L, 0L, 1L), Banana = c(1L, 
1L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA, -5L
))

需要创建一个二元变量Apple_or_Banana,规则如下:

  • 若Apple和Banana均为0,新变量取0;
  • 若Apple和Banana其中一个为1(或两者都为1),新变量取1。

预期输出:

> dput(test)
structure(list(Apple = c(0L, 1L, 1L, 0L, 1L), Banana = c(1L, 
1L, 0L, 0L, 0L), Apple_or_Banana = c(1L, 1L, 1L, 0L, 1L)), class = "data.frame", row.names = c(NA, 
-5L))
解决方案

方法1:逻辑运算转换

利用逻辑或|直接判断,再转为整数类型:

test$Apple_or_Banana <- as.integer(test$Apple | test$Banana)

逻辑或运算会在任意一个变量为1时返回TRUE,否则返回FALSE,as.integer()将TRUE转为1、FALSE转为0,完全匹配需求。

方法2:行求和判断

因两个变量都是0/1取值,行求和后大于0则对应新变量为1,否则为0:

test$Apple_or_Banana <- as.integer(rowSums(test) > 0)

仅当两个变量都为0时行和为0,其余情况和≥1,通过>0转为逻辑值再转整数即可。

方法3:ifelse条件判断

直接按规则编写条件语句:

test$Apple_or_Banana <- ifelse(test$Apple == 0 & test$Banana == 0, 0, 1)

明确指定:当两者都为0时赋值0,其余所有情况赋值1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:50:14