我有一个数据框似的:
false
我希望通过id1& ID2。我希望能够同时获得val1,val2,val3,val4的平均值。
我该怎么做?
这是我现在拥有的,但它仅适用于1列:
$this->disFunctions
另外,如何重命名在上面给出的相同语句中作为均值输出的列
答案 0 :(得分:37)
我们可以使用aggregate
的公式方法。 ' rhs'上的变量。 ~
是分组变量,而.
代表' df1'中的所有其他变量。 (从示例中,我们假设除了分组之外的所有列都需要mean
),指定数据集和函数(mean
)。
aggregate(.~id1+id2, df1, mean)
或者我们可以在分组后使用summarise_each
中的dplyr
group_by
)
library(dplyr)
df1 %>%
group_by(id1, id2) %>%
summarise_each(funs(mean))
或另一个选项是data.table
。我们转换了' data.frame'到' data.table' (setDT(df1)
,按' id1'和' id2'分组,我们遍历data.table(.SD
)的子集并获取{{1} }。
mean
library(data.table)
setDT(df1)[, lapply(.SD, mean), by = .(id1, id2)]
答案 1 :(得分:11)
你可以尝试:
agg <- aggregate(list(x$val1, x$val2, x$val3, x$val4), by = list(x$id1, x$id2), mean)