dplyr 中的字符串操作/聚合

Posted

技术标签:

【中文标题】dplyr 中的字符串操作/聚合【英文标题】:String Manipulation/Agregation in dplyr 【发布时间】:2014-11-05 07:34:35 【问题描述】:

我想执行 group_by 并使用 dplyr 对数据框进行字符串操作

df<-data.frame(varx=c("x1","x1","x2","x2","x2"),vary=c("y1","y2","y3","y4","y5"))

我希望输出 (newdf) 如下所示:

newdf <- data.frame(varx=c("x1","x2"),catY=c("y1,y2","y3,y4,y5"))

我在 dplyr 中尝试了以下操作

df %>% group_by(varx)%>%summarise(catY=paste(vary))
Error: expecting a single value

还尝试了以下方法:

df %>% group_by(varx)%>%mutate(catY=paste(vary))

Source: local data frame [5 x 3]
Groups: varx

我可以使用基本的数据框操作来做到这一点。 在了解 dplyr 的出路方面需要帮助。

【问题讨论】:

df %&gt;% group_by(varx)%&gt;%summarise(catY=paste(vary, collapse = ","))paste 给了你一个向量,所以你需要把collapse 变成一维字符向量 谢谢大卫...确实有效... 谢谢大卫,你为什么不写这个评论作为答案呢?所以会更好的推广。 【参考方案1】:

David 的评论略短版本是:

library(dplyr)
df %>% group_by(varx) %>% summarise(catY = toString(vary))

#Source: local data frame [2 x 2]
#
#  varx       catY
#1   x1     y1, y2
#2   x2 y3, y4, y5

【讨论】:

你想看一些时髦的输出,看看df %&gt;% group_by(varx) %&gt;% do(data.frame(catY = list(.$vary))) 哈哈,这个不错(可能dplyr::do还没有完全成熟?)@RichardScriven 嗯,这也是我尝试过的一个很没用的操作

以上是关于dplyr 中的字符串操作/聚合的主要内容,如果未能解决你的问题,请参考以下文章

如何在 dplyr::across 的 .names 参数中使用字符串操作函数

在dplyr中,如何删除和重命名不存在的列,操作所有名称,并使用字符串命名新变量?

MongoDB:在聚合管道中使用字符串操作

通过 dplyr 聚合 - 将单个列从因子变为数字

无法使用 R dplyr 在旧版 SQL 查询中引用 SQL 视图

使用 dplyr 复制一列并为 R 中的新列添加前缀