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

如何按另一列类别分组并列出对应唯一值?R代码报错求助

按分组列提取唯一值的解决方案

你的代码报错是因为先单独提取了ED列的唯一值,得到的是数值型向量,而group_by()是针对数据框的函数,无法对向量执行分组操作。以下是几种可行的实现方法(除计数外):

方法1:使用dplyr(推荐)

先按county分组,再提取每组的唯一ED值,有两种呈现形式:

形式1:长格式数据框(每行对应一个县的一个唯一ED)

library(dplyr)
SoS_Voterfile_101723 %>%
  group_by(county) %>%
  distinct(ED) %>%  # 自动保留分组列county,移除重复ED
  ungroup()

形式2:每个县对应一个ED列表

library(dplyr)
SoS_Voterfile_101723 %>%
  group_by(county) %>%
  summarize(unique_ED = list(unique(ED))) %>%  # 将每个县的唯一ED合并为列表
  ungroup()

方法2:使用base R

无需额外包,用原生函数实现:

得到列表格式结果

# 按county拆分ED列,再提取每个子集的唯一值
unique_ed_list <- lapply(split(SoS_Voterfile_101723$ED, SoS_Voterfile_101723$county), unique)

转换为数据框格式

result_df <- data.frame(
  county = names(unique_ed_list),
  unique_ED = I(unique_ed_list)  # I()用于保留列表结构
)

方法3:使用data.table(大数据场景更高效)

library(data.table)
setDT(SoS_Voterfile_101723)

# 长格式结果
result_long <- SoS_Voterfile_101723[, .(unique_ED = unique(ED)), by = county]

# 列表格式结果
result_list <- SoS_Voterfile_101723[, .(unique_ED = list(unique(ED))), by = county]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:16:11