例如,我有一个数据框:
gene1 gene2 gene3 group
sample1 1 2 4 1
sample2 2 3 4 1
sample3 3 4 4 1
sample4 4 5 4 2
sample5 5 6 4 2
我想计算每个组的平均值,然后将结果放入新的数据框中,如下所示:
group gene1 gene2 gene3
1 2 3 4
2 4.5 5.5 4
我如何实现呢?
非常感谢您。
答案 0 :(得分:0)
使用dplyr可以很容易地按组汇总所有变量。如果您只对某些变量感兴趣,则可以使用summarise_if
。然后将其存储在新对象中。
library(dplyr)
new_data <- data %>% group_by(group)
%>% summarise_all(funs(mean))
答案 1 :(得分:0)
其他答案使用dplyr,我将使用data.table给出解决方案:
library(data.table)
setDT(data)[, lapply(.SD, mean), by=.(group), .SDcols = c('gene1', 'gene2', 'gene3')]