【发布时间】:2016-08-07 11:28:25
【问题描述】:
假设我有一个 data.frame 的函数,它返回一个数字,现在我想在 dplyr 中使用 summarise ,其中新变量应该是应用于 data.frame 分组的函数另一个变量。
这是一个愚蠢的例子
df <- data.frame(id=rep(c("A","B"),each=5),diff=rnorm(10))
func<-function(data){
mean(data$diff)
}
我知道这个例子很容易使用summarise(Mean = mean(diff)) 完成,但重点不是解决这个例子,而是一般使用带有data.frame 函数的summarise
到目前为止我的尝试是
df %>% group_by(id) %>% summarise(New = func(.))
但它为每个组提供相同的值,这是整体功能。
希望一切都清楚。
【问题讨论】:
-
用什么比较好?
-
为什么不能是
func <- function(col) mean(col); df %>% group_by(id) %>% summarise(New = func(diff))或者使用[对数据进行子集化 -
@akrun 为什么在函数内部使用
$不好? -
评估不正确
-
@akrun 因为一般来说它将是更多列的函数