R语言实现重复PROTOCOL_ID的PROGRAM_AREA同行合并
合并重复PROTOCOL_ID对应的PROGRAM_AREA到同一行的最简R方案
先给出你的原始数据框:
df <- structure(list(PROTOCOL_ID = c(124, 124, 38, 762, 74, 146), PROGRAM_AREA = c("LOCR", "CRC", "LOCR", "Pedi", "LOCR", "LOCR")), row.names = c(NA, 6L), class = "data.frame")
以下是两种最简实现方案:
方案1:用dplyr(tidyverse生态)
这是日常数据处理中常用的简洁写法,先加载dplyr包,再分组聚合:
library(dplyr) df_merged <- df %>% group_by(PROTOCOL_ID) %>% summarize(PROGRAM_AREA = paste(PROGRAM_AREA, collapse = ", ")) %>% ungroup()
方案2:用Base R(无需额外安装包)
如果不想依赖第三方包,直接用base R的aggregate函数就能搞定:
df_merged <- aggregate(PROGRAM_AREA ~ PROTOCOL_ID, data = df, FUN = paste, collapse = ", ")
两种方案的输出结果一致,合并后的数据框如下:
PROTOCOL_ID PROGRAM_AREA 1 38 LOCR 2 74 LOCR 3 124 LOCR, CRC 4 146 LOCR 5 762 Pedi
内容的提问来源于stack exchange,提问作者Joe Crozier
相关产品推荐
相关产品推荐

