我有一个看起来像这样的数据框

> 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,它是bar by foo值的串联.因此,新数据应该如下所示:

  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相关问答推荐

使用ggcorrplot删除值,但保留不重要相关性的 colored颜色

在集合群体模型中计算时间步依赖的速率/参数

如何以编程方式将X轴勾号上的希腊符号合并到R图中?

从API中抓取R数据SON

基于shiny 应用程序中的日期范围子集xts索引

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

使用tidyverse方法绑定行并从一组管道列表执行左连接

R:连接值,而不是变量?

Highcharter多次钻取不起作用,使用不同方法

根据模式将一列拆分为多列,并在R中进行拆分

ggplot2中的X轴显示数值,单位为百,而不是十

使用tidy—select创建一个新的带有mutate的摘要变量

根据日期从参考帧中创建不同的帧

在ggplot2中更改小提琴情节的顺序

R-按最接近午夜的时间进行筛选

派生程序包| ;无法检索';return()';的正文

如果COLSUM为>;0,则COLNAME为向量

在R中使用列表(作为tibble列)进行向量化?

如何将这个小列表转换为数据帧?

禁用时,SelecizeInput将变得不透明