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

在R中如何列出与ID变量关联的key变量的全部对应取值?

你之前使用group_by()同时传入id和key没有得到预期结果,是因为双变量分组会把每个id+key的唯一组合作为一个分组,每个分组仅对应1行数据,无法实现按ID聚合的效果,仅需按id单个字段分组即可。

R实现ID对应不同key统计及指定格式表格输出

1. 统计每个ID对应的不同key数量

直接使用dplyr的分组聚合即可实现,60万行数据使用该方法计算无性能压力,代码如下:

library(dplyr)
# 统计不同key数量
key_count <- data %>%
  group_by(id) %>%
  summarise(distinct_key_num = n_distinct(key), .groups = "drop")

输出的key_count数据框中每一行对应一个ID,distinct_key_num列即为该ID关联的不同key的总数。

2. 生成ID合并展示的表格

要实现同ID仅第一行显示ID值、其余行对应ID位置留空的格式,可按如下方式处理:

# 先对数据按ID去重排序,再处理ID列的显示
display_table <- data %>%
  distinct(id, key) %>% # 先去除同ID同key的重复行
  arrange(id) %>% # 按ID排序保证同ID的行连续
  group_by(id) %>%
  mutate(id = ifelse(row_number() == 1, id, "")) %>% # 同ID仅第一行保留ID值
  ungroup()

此时输出display_table即可得到你需要的展示效果,示例数据运行后输出如下:

# A tibble: 7 × 2
  id       key                        
  <chr>    <chr>                      
1 58497484 5718368_09/06/1981_3_2014 
2 ""       2077450_04/05/2001_1_2016 
3 ""       2077477_03/03/1978_8_2017 
4 58544005 2077485_02/06/1977_8_2014 
5 62824455 2082225_02/07/1998_10_2017
6 74764718 2077388_30/01/2000_11_2017
7 74766653 2091585_23/10/1982_1_2014 

如果需要导出为带合并单元格格式的Excel文件,可额外使用openxlsx包实现ID列的单元格合并效果。

内容的提问来源于stack exchange,提问作者Letícia Santana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:02