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

R语言如何统计tibble中含至少3个NA值的行数并解决相关报错

错误原因说明

  • 第一次报错:is.na() 要求传入判断对象,你未传参触发参数缺失错误;且is.na()返回的是单元素/多元素的逻辑值,直接和3比较无法实现「统计每行NA总数」的需求。
  • 第二次报错:is.na(v65:v71) 写法错误,tidyverse中不能直接在is.na()内用冒号选择多列,该写法会被识别为数值序列计算,返回的多列逻辑值也无法直接用于filter()的行筛选,后续tally()的使用逻辑也不符合需求。

正确实现方案

推荐优先使用rowSums实现,运行效率更高,尤其适合大样本数据集:

library(dplyr)

# 统计符合「至少3个缺失」的受访者数量
na_3plus_count <- data %>%
  filter(rowSums(is.na(across(v65:v70))) >= 3) %>%
  nrow()

如果偏好rowwise的直观写法,可以用以下代码修正你的第一次尝试:

library(dplyr)

na_3plus_count <- data %>%
  rowwise() %>%
  filter(sum(is.na(c_across(v65:v70))) >= 3) %>%
  ungroup() %>% # 取消行分组,避免影响后续数据操作
  nrow()

如果需要提取所有符合条件的行数据,只需要删除代码最后的nrow()即可。

注意:如果你的实际数据集列范围是v65到v71,请将代码中的v65:v70替换为v65:v71,避免列选择错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:03:03