用dplyr按组连接字符串

用dplyr按组连接字符串

This question already has answers here:
Collapse / concatenate / aggregate a column to a single comma separated string within each group

(4个答案)


3年前关闭。




我有一个看起来像这样的数据框
> data <- data.frame(foo=c(1, 1, 2, 3, 3, 3), bar=c('a', 'b', 'a', 'b', 'c', 'd'))
> data
  foo bar
1   1   a
2   1   b
3   2   a
4   3   b
5   3   c
6   3   d

我想创建一个新列bars_by_foo,它是foo的bar值的串联。因此,新数据应如下所示:
  foo bar bars_by_foo
1   1   a          ab
2   1   b          ab
3   2   a           a
4   3   b         bcd
5   3   c         bcd
6   3   d         bcd

我希望以下方法能起作用:
p <- function(v) {
  Reduce(f=paste, x = v)
}
data %>%
  group_by(foo) %>%
  mutate(bars_by_foo=p(bar))

但是那个代码给我一个错误
Error: incompatible types, expecting a character vector

我究竟做错了什么?

最佳答案

你可以做

data %>%
     group_by(foo) %>%
     mutate(bars_by_foo = paste0(bar, collapse = ""))

没有任何辅助功能

关于r - 用dplyr按组连接字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38514988/

10-11 10:57