如何基于另一个生成新的数据帧?

时间:2019-07-19 11:16:32

标签: r

例如,我有一个数据框:

        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

我如何实现呢?

非常感谢您。

2 个答案:

答案 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')]