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

R语言mutate中排除NA计算变量和的问题求助

解决方法

根据你的描述和数据特征(每行至少有一个NA),你实际需要的是将两个变量合并:取每行中非NA的那个变量的值,两个都为NA时新变量保留NA。以下是具体实现:

核心问题分析

  • 你尝试的第一个代码中,na.rm = TRUE参数位置错误,mutate函数本身不接受该参数,且+运算只要有NA就返回NA,因此结果全为NA。
  • 第二个代码用sum(..., na.rm = TRUE)会将NA视为0,导致两个都为NA的行被统计为0,不符合你的预期。

正确代码

方法1:使用coalesce函数(最简洁)

coalesce函数会返回输入中第一个非NA的值,完美匹配你的需求:

library(tidyverse)
df <- df |>
  mutate(naked_man = coalesce(naked_fj, naked_naked))

方法2:使用case_when(逻辑更直观)

通过条件判断明确取值规则:

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

运行上述代码后,新变量naked_man的频数会符合你的预期:0的数量为244,1的数量为163,其余为NA。

内容的提问来源于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.03 22:25:11