如何统计R Studio数据集中v1至v6列缺失值≥3的受访者数量
R 计算v1-v6至少3个缺失值的受访者人数方法
假设你存储数据的对象名为df,以下提供两种常用实现方案:
基础R实现
直接通过行求和统计缺失数后计数,代码如下:
# 计算符合条件的总人数 sum(rowSums(is.na(df[, paste0("v", 1:6)])) >= 3)
逻辑说明:
is.na(df[, paste0("v", 1:6)]):先筛选v1到v6列,判断每个单元格是否为缺失值,返回逻辑矩阵rowSums(...):按行对逻辑矩阵求和,得到每一行受访者在6个变量上的缺失总个数>=3:筛选出缺失数≥3的行,返回逻辑向量sum(...):统计逻辑向量中TRUE的数量,即符合要求的受访者总人数
tidyverse 实现
如果你习惯使用dplyr的管道语法,可以用如下代码:
library(dplyr) df %>% rowwise() %>% # 按行处理 mutate(na_count = sum(is.na(c_across(v1:v6)))) %>% # 统计每行v1到v6的缺失数 ungroup() %>% filter(na_count >= 3) %>% # 筛选缺失数≥3的行 nrow() # 统计行数即总人数
注意:如果你的数据集里缺失值不是用R默认的NA表示,而是用特殊编码(比如-9、空字符串""等),需要先将这些特殊值替换为NA再运行上述代码,替换示例:
df[df == 你的缺失编码] <- NA
内容的提问来源于stack exchange,提问作者Kexin Ni
相关产品推荐
相关产品推荐

