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

使用dplyr对含缺失值的数据集按行设置缺失率判断条件

dplyr实现按行判断指定列缺失占比的最优方案

针对你的需求,优先推荐使用rowSums的实现方案,该方案无需逐行分组,对大型数据集的运算效率远高于rowwise写法:

library(dplyr)

df <- df %>%
  mutate(
    missing = if_else(
      # 计算score2到score5列的NA数量/总列数,判断是否超过30%
      # 列数固定为4可直接写4,需要动态适配可替换为ncol(across(score2:score5))
      rowSums(is.na(across(score2:score5))) / 4 > 0.3,
      "yes",
      "no"
    )
  )

如果你习惯使用rowwise写法,正确代码如下,注意用完后要取消行分组避免影响后续操作:

df <- df %>%
  rowwise() %>%
  mutate(
    missing = if_else(
      sum(is.na(c_across(score2:score5))) / 4 > 0.3,
      "yes",
      "no"
    )
  ) %>%
  ungroup() # 取消行分组

原代码报错原因

  1. 语法结构错误:新列missing的定义需要放在mutate()函数内部
  2. 列选择错误:直接使用.x会匹配整行所有列,而非你需要的score2到score5范围
  3. 行维度列选择逻辑缺失:rowwise模式下需要用c_across选中指定列进行逐行计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:24:03