r - 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
解决方案
和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
推荐阅读
- wordpress - WordPress:pre_get_posts 动作结合 date_query 和 meta_query
- python - 字符串替换的无错误版本
- angular - 以 Mon dd yyyy 格式显示日期
- reporting-services - SSRS 仅为订阅设置默认参数
- go - 访问另一个结构上的函数
- html - 在不编辑蓝色分量值的情况下,RGB 中有多少种组合?
- javascript - 是否可以来回(无休止地)改变innerHTML/textContent?
- glassfish-3 - GlassFish:警告:GRIZZLY0023:中断空闲线程
- python - 正则表达式匹配小于 500 英尺的字符串中的小数位
- c# - 将 blazor 项目正确发布/部署到 github 页面