首页 > 解决方案 > 字符列聚合 grop by and paste

问题描述

我有下一个数据框:

col1<-c("A1","B1","A1","B1","C1","C1","A1")
col2<-c("a","b","c","d","b","f","a")
dat<-data.frame(col1,col2)

从以前的数据框中,我想得到这样的东西:

A1   "ac"
B1   "bd" 
C1   "bf"

我的意思是,我需要通过在 col 2 中粘贴唯一值来聚合 col1 中的代码。

我正在尝试这样的事情

   dat%>%group_by(col1)%>%summarise(pp=paste0(col2))

但它不起作用。

标签: rdplyrgroup-byaggregate

解决方案


unique在行上执行此操作。此外,paste0它本身不起作用。它需要额外的论点collapse

 aggregate(col2~ col1, unique(dat), FUN = paste, collapse="")

library(dplyr)
library(stringr)
dat %>%
   distinct %>%
   group_by(col1) %>%
   summarise(pp = str_c(col2, collapse=""), .groups = 'drop')

-输出

# A tibble: 3 x 2
  col1  pp   
  <chr> <chr>
1 A1    ac   
2 B1    bd   
3 C1    bf   

推荐阅读