首页 > 解决方案 > 按列分组并用分号分隔

问题描述

使用 R 我试图从名称列中获取常见项目,然后按该列分组,并在一行中用分号聚合另一列。对于标识为 FA 的列,我想这样做。

由此:

Name            FAs   DS
Apple 21        180   A
Apple 21        190   D
Apple 21        100   A
Apple 11        130   A
Apple 11        110   A

对此:

 Name           FAs             DS
 Apple 21       180; 190;100    A
 Apple 11       130;110         D

标签: r

解决方案


你可以试试这个,FAs因为没有给出明确的方向DS。这类似于base R@Onyambu 的出色解决方案,但使用dplyr

library(dplyr)
#Data
df <- structure(list(Name = c("Apple 21", "Apple 21", "Apple 21", "Apple 11", 
"Apple 11"), FAs = c(180L, 190L, 100L, 130L, 110L), DS = c("A", 
"D", "A", "A", "A")), row.names = c("1", "2", "3", "4", "5"), class = "data.frame")

#Code
df %>% group_by(Name) %>% summarise(FA=paste0(FAs,collapse = ';'))

# A tibble: 2 x 2
  Name     FA         
  <chr>    <chr>      
1 Apple 11 130;110    
2 Apple 21 180;190;100

推荐阅读