【发布时间】:2015-01-03 23:37:16
【问题描述】:
dplyr 包在流式数据处理中的流畅性让我非常震惊。最近我急于解决一个问题,为每个组 ID 生成一个新的数据帧,并将这些小数据帧组合成一个最终更大的数据帧。一个玩具例子:
input.data.frame %>%
group_by(gid) %>%
{some operation to generate a new data frame for each group} ## FAILED!!!!
在dplyr中,函数mutate为每个组添加新列和summarise为每个组生成摘要,两者都不能满足我的要求。 (我错过了什么吗?)
或者,使用plyr包的ddply,dplyr之前的交互,我可以通过
ddply(input.data.frame, .(gid), function(x) {
some operation to generate a new data frame for each group
}
但不足之处在于,当我加载 plyr 包时,dplyr 中的某些功能将被屏蔽。
【问题讨论】:
-
在这种情况下,您必须使用
do运算符。但是,如果您向我们展示了您最终真正想做/实现的目标,那就更好了。来自帮助文件:“您可以使用 do 执行任意计算,返回数据帧或任意对象,这些对象将存储在列表中。” -
很好的介绍“dplyr包在流式数据处理中的流畅性让我非常震惊。” :)
-
顺便说一下,如果您同时加载两个包(plyr 和 dplyr),建议先加载 plyr,然后再加载 dplyr,因此“标准”包例如“summarise” 将是 dplyr,但如果您需要从 plyr 获得它,只需使用
plyr::summarise使包明确。 -
do,这就是我要找的!!很一般的操作。哥们,谢啦。 :)