首页 > 解决方案 > 如何将具有重复键的字段组合在一起,以逗号分隔

问题描述

我有一个 data.frame,它有一个键fignum和一个数据字段codefile,但fignum可能在哪里重复。

在出现重复的地方,我想将codefile数据字段组合成一行,用,. 这是我的输入:

> cf
   fignum                       codefile
8     4.6           04_6-cholera-water.R
9     P.3 04_P3a-cholera-neighborhoods.R
10    P.3       04_P3b-SnowMap-density.R
11    5.5    05_5-playfair-east-indies.R

> duplicated(cf[,"fignum"])
[1] FALSE FALSE  TRUE FALSE

所需的输出将两个“P.3”codefile值组合成一个观察值,如下所示:

> cf-wanted
   fignum                                                  codefile
8     4.6                                      04_6-cholera-water.R
9     P.3  04_P3a-cholera-neighborhoods.R, 04_P3b-SnowMap-density.R
10    5.5                               05_5-playfair-east-indies.R

标签: rstringkey

解决方案


我们group_by可以fignum总结

library(dplyr)
cf %>% 
  group_by(fignum) %>% 
  summarise(codefile = paste0(codefile, collapse = ', '), .groups = 'drop')
fignum codefile                                                
  <chr>  <chr>                                                   
1 4.6    04_6-cholera-water.R                                    
2 5.5    05_5-playfair-east-indies.R                             
3 P.3    04_P3a-cholera-neighborhoods.R, 04_P3b-SnowMap-density.R

推荐阅读