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

如何在R语言中基于5列Yes/No值创建二元分类新变量?

解决方法

你现在的代码问题在于用sum()会计算整个数据框里满足条件的总行数,而不是给每行生成对应的新变量值,所以得到的pyes和pno是单一数值,没法作为每行的变量。

要实现你要的逻辑,有两种简单的R语言写法:

方法一:直接用逻辑判断+ifelse

先给每行生成一个逻辑值(判断该行是否有任意一列是"Yes"),再用ifelse转换为"Yes"/"No":

# 注意检查列名:你代码里出现了pocket_biopsy和pbiopsy,确认是不是同一个列;另外重复的pxray判断可以删掉
has_yes <- data$pocket_biopsy == "Yes" | 
           data$pxray == "Yes" | 
           data$pchemo == "Yes" | 
           data$pconsult == "Yes"

# 生成新变量
data$new_var <- ifelse(has_yes, "Yes", "No")

方法二:用rowSums统计每行"Yes"数量

如果你的数据里有缺失值(NA),这种方法更稳妥,用rowSums统计每行的"Yes"数量,再判断是否大于0:

# 把目标列的"Yes"判断整合成矩阵,统计每行的"Yes"个数
yes_count <- rowSums(cbind(
  data$pocket_biopsy == "Yes",
  data$pxray == "Yes",
  data$pchemo == "Yes",
  data$pconsult == "Yes"
), na.rm = TRUE)

# 数量>0就赋值"Yes",否则"No"
data$new_var <- ifelse(yes_count > 0, "Yes", "No")

额外提醒

  • 你代码里重复写了两次data$pxray == "Yes",属于冗余代码,删掉不影响结果
  • 注意确认列名:pocket_biopsy和pbiopsy是不是同一个列的笔误,避免因为列名错误导致结果不对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:55:59