tidyverse:如果满足特定条件,则连接行

时间:2021-05-04 14:02:28

标签: r dplyr 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 

1 个答案:

答案 0 :(得分:2)

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

使用 base R

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

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