R中按ID分组合并LOC列时如何对重复值去重拼接
R按ID分组拼接唯一LOC值的代码调整方法
你现有代码的问题是直接对分组内所有LOC值拼接,没有先做去重处理,调整方案如下:
最优方案(输出每个ID单行的结果)
替换mutate为summarise,同时对LOC列先取唯一值再拼接:
library(dplyr) df %>% group_by(ID) %>% summarise(LOC = paste(unique(LOC), collapse = " + "), .groups = "drop")
执行后会直接得到你需要的输出格式:每个ID对应一行,LOC列为去重后拼接的结果。
如果需要拼接的LOC值按字母序排列,可以把
unique(LOC)替换为sort(unique(LOC))。
保留原表所有行、仅新增拼接列的方案
如果需要保留原数据的所有行,只追加拼接后的新列,只需要在原代码基础上给LOC加unique()即可:
library(dplyr) df %>% group_by(ID) %>% mutate(concat_LOC = paste(unique(LOC), collapse = " + ")) %>% ungroup()
内容的提问来源于stack exchange,提问作者user3249770
相关产品推荐
相关产品推荐

