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

如何在expss中获取列的NA值计数及相关最值统计?

在expss包中统计NA值计数与最值信息的方法

expss包提供了专门工具处理NA统计,同时可以结合dplyr或自身功能获取最值信息,以下是具体实现方案:

一、统计NA值计数

使用na_stat()函数可直接获取变量的缺失值数量、非缺失值数量及缺失占比,支持整体统计和分组统计:

1. 整体数据的NA统计

library(expss)
library(dplyr)

example <- data.frame(org = c("A", "B", "C", "D", "E", "F", "G"),
                      q1 = c("apple", "apple", NA, "apple", "apple", "apple", NA),
                      q2 = c(NA, NA, NA, "banana", "banana", "banana", NA),
                      q3 = c("orange", NA, "orange", "orange", NA, "orange", NA),
                      region = c("1", "1", "2", "3", "3", "2", "2"))

# 统计q1到q3的NA相关信息
na_stat(example, q1 %to% q3)

输出包含n_miss(缺失值数量)、n_valid(非缺失值数量)、pct_miss(缺失占比)等字段。

2. 按分组统计NA值

如果需要按region分组统计各变量的NA情况:

example %>% 
  group_by(region) %>% 
  na_stat(q1 %to% q3)

二、获取最值信息

1. 数值型变量的最值

如果变量是数值型(比如新增数值列q4),可结合dplyr的summarise和across函数获取最小/最大值:

# 新增数值型示例列
example$q4 <- c(10, 20, NA, 30, 40, NA, 50)

# 整体最值统计
example %>% 
  summarise(across(q4, list(min = ~min(., na.rm = TRUE), max = ~max(., na.rm = TRUE))))

# 按region分组的最值统计
example %>% 
  group_by(region) %>% 
  summarise(across(q4, list(min = ~min(., na.rm = TRUE), max = ~max(., na.rm = TRUE))))

2. 字符型变量的"最值"

对于示例中的字符型变量(q1-q3),最值指字典序的最小/最大字符,同样可以用上述方式获取:

example %>% 
  summarise(across(q1 %to% q3, list(min_char = ~min(., na.rm = TRUE), max_char = ~max(., na.rm = TRUE))))

三、交叉表中包含NA的统计

如果需要在cross_cpct生成的交叉表中显示NA的计数和占比,只需在mrset参数中添加include_na = TRUE:

# 生成包含NA类别的交叉表
pct_all_with_na <- cross_cpct(example, mrset(q1 %to% q3, include_na = TRUE), region)
print(pct_all_with_na)

交叉表会把NA作为单独类别,展示其在各分组中的计数和百分比。

四、综合统计NA计数与最值

可以把NA统计和最值信息整合到一个结果中:

example %>% 
  group_by(region) %>% 
  summarise(
    # 统计各变量的NA数量
    across(q1 %to% q3, list(na_count = ~sum(is.na(.))), .names = "{col}_na_count"),
    # 统计字符型变量的字典序最值
    across(q1 %to% q3, list(min_char = ~min(., na.rm = TRUE), max_char = ~max(., na.rm = TRUE)), .names = "{col}_{fn}"),
    # 统计数值型变量的最值
    across(q4, list(min_val = ~min(., na.rm = TRUE), max_val = ~max(., na.rm = TRUE)), .names = "{col}_{fn}")
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:15:02