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

如何在R语言中批量查看所有字符/因子型变量的唯一值与水平

R批量提取数据框分类变量取值方案

问题场景

用R处理大型数据集时,逐个查询每个字符型、因子型变量的唯一值或水平非常耗时。

示例测试数据

library(tidyverse)

d = tibble(age = rnorm(10, 50, 3),
           sex = rep(c("male", "female"), 5),
           name = letters[1:10]) %>% 
  mutate(sex = as.factor(sex))

d

运行上述代码即可查看示例数据的预览效果

原有操作的痛点

大型数据集通常包含大量分类变量,逐个核对变量取值效率极低,例如单独查询sex变量水平的代码为:

levels(d$sex)

运行仅返回结果:[1] "female" "male",变量数量多时重复操作会浪费大量时间。

批量实现代码

列表格式输出(适合快速查看)

直接返回命名列表,每个列表项对应一个分类变量的所有取值:

d %>%
  # 自动筛选所有因子型、字符型列
  select(where(~ is.factor(.x) | is.character(.x))) %>%
  # 因子列提取水平,字符列提取去重唯一值
  map(~ if (is.factor(.x)) levels(.x) else unique(.x))

长表格式输出(适合导出/整理)

如果需要结构化的表格结果,可以用以下代码返回两列数据:variable列为变量名,value列为对应变量的取值:

d %>%
  select(where(~ is.factor(.x) | is.character(.x))) %>%
  map_dfr(~ tibble(value = if (is.factor(.x)) levels(.x) else unique(.x)), .id = "variable")
  • 上述代码无需手动指定变量名,会自动识别所有符合要求的列
  • 兼容普通data.frame和tibble格式的数据集
  • 大型数据集下运行效率远高于手动逐个查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:30:28