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

如何在R中对含0、1、NA的两变量求和并排除NA干扰?

解决R语言中含NA变量的求和问题

你需要的是仅当两个变量均非NA时计算它们的和,否则返回NA(或排除这些行),以下是可行的几种方法:

方法1:使用rowSums(简洁高效)

rowSums默认会保留NA(即只要输入中有NA,结果就是NA),正好匹配你的需求:

library(tidyverse)

df <- df |>
  mutate(naked_man = rowSums(select(., naked_fj, naked_naked), na.rm = FALSE))

方法2:用ifelse显式判断NA

通过条件判断直接过滤含NA的行的计算逻辑:

df <- df |>
  mutate(naked_man = ifelse(is.na(naked_fj) | is.na(naked_naked), 
                            NA, 
                            naked_fj + naked_naked))

方法3:使用case_when(适配多条件扩展场景)

如果后续需要添加更多逻辑规则,case_when的可读性和扩展性更强:

df <- df |>
  mutate(naked_man = case_when(
    is.na(naked_fj) | is.na(naked_naked) ~ NA_real_,
    TRUE ~ naked_fj + naked_naked
  ))

验证结果

运行任一方法后,执行以下代码查看新变量的频数分布:

table(df$naked_man, useNA = "ifany")

此时结果中:

  • 0对应两行均为0的观测数
  • 1对应一行0一行1的观测数
  • 2对应两行均为1的观测数
  • <NA>对应至少有一个变量为NA的观测数

如果需要直接排除含NA的结果,只需修改table的参数:

table(df$naked_man, useNA = "no")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:16:07