首页 > 解决方案 > tidyverse:如果满足特定条件,则连接行

问题描述

如果另一列的行相同(Fn),我想连接一列(Des)中的行。请有任何提示。

library(tidyverse)
tb1 <-
  tibble(
    Fn = c("A" , "B", "B", "C", "D", "D")
  , Des = c("A1", "B1", "B2", "C1", "D1", "D2")
  )
tb1

# A tibble: 6 x 2
  Fn    Des  
  <chr> <chr>
1 A     A1   
2 B     B1   
3 B     B2   
4 C     C1   
5 D     D1   
6 D     D2 

需要输出

Fn    Des  
<chr> <chr>
A     A1   
B     B1 B2   
C     C1   
D     D1 D2 

标签: rdplyrtidyverse

解决方案


dplyr

只需按 Fn 分组并将行粘贴+折叠在一起!

tb1 %>%
  group_by(Fn) %>% 
  summarise(Des = paste(Des, collapse = " "))

#> # A tibble: 4 x 2
#>   Fn    Des  
#>   <chr> <chr>
#> 1 A     A1   
#> 2 B     B1 B2
#> 3 C     C1   
#> 4 D     D1 D2

baseR

aggregate(Des ~ Fn, tb1, paste, collapse = " ")

#>   Fn   Des
#> 1  A    A1
#> 2  B B1 B2
#> 3  C    C1
#> 4  D D1 D2

推荐阅读