【发布时间】:2015-04-07 23:21:50
【问题描述】:
使用 dplyr,我想通过一个我可以改变的变量来总结 [原文如此](例如,在循环或应用样式命令中)。
直接输入名称可以正常工作:
library(dplyr)
ChickWeight %>% group_by( Chick, Diet ) %>% summarise( mw = mean( weight ) )
但group_by 不是为获取字符向量而编写的,因此传递结果更难。
v <- "Diet"
ChickWeight %>% group_by( c( "Chick", v ) ) %>% summarise( mw = mean( weight ) )
## Error
我将发布一个解决方案,但很想看看其他人是如何解决这个问题的。
【问题讨论】:
-
:-)
summarize [sic]+1 -
只做
group_by_( c( "Chick", v ) )而不是group_by( c( "Chick", v ) ).... -
当然,如果
dplyr无法做到这一点,您也可以使用data.table轻松做到这一点 :) 就像在library(data.table) ; as.data.table(ChickWeight)[, .(mw = mean(weight)), c("Chick", v)]中一样 -
@KonradRudolph - 我也使用
summarise,主要是因为没有summarize_each。少一件我必须记住的事情。 -
@Richard 在 Hadley 的图书馆中使用英国英语是一个不幸(= 糟糕)的决定。 API 应该是统一的,而不是个性化的。我喜欢在我所有的写作中使用英式拼写,但我在我的代码中坚持统一、成熟的美式拼写。当其他代码违反该规则时,这非常烦人并且违反了 API 设计的各种原则(非英语编程语言通常被视为失败的实验是有原因的)。因此,我强烈建议遵守美国拼写(缺少
summarize_each可能是疏忽)。
标签: r group-by dplyr split-apply-combine