如何按另一列类别分组并列出对应唯一值?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
相关产品推荐
相关产品推荐

