具有相同ID的长格式到宽格式

时间:2020-10-01 10:45:11

标签: r

作为初始数据框:

structure(list(text = c("test", "text", "section", "2", "sending"
), id = c(32, 32, 41, 41, 41)), class = "data.frame", row.names = c(NA, 
-5L))

如何使用相同的id从长到宽格式将文本列的内容放在同一行中,并用空格分隔?

示例输出:

id text
32 test text
41 section 2 sending

2 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

library(tidyverse)

df %>%
  group_by(id) %>%
  mutate(text = paste(text, collapse = " ")) %>%
  slice(1)

# A tibble: 2 x 2
# Groups:   id [2]
  text                 id
  <chr>             <dbl>
1 test text            32
2 section 2 sending    41

答案 1 :(得分:2)

您可以从aggregate包中{stats}并将paste用作您的汇总函数:

aggregate(text ~ id, FUN = paste, collapse = " ", data = df)

#>   id              text
#> 1 32         test text
#> 2 41 section 2 sending