根据数据框的重复列值使 table 具有平均值(均值)

make table with average (mean) based on repeated column values of a data frame

我有一个这样的 table :

并且我想计算 table 中每一列的平均值的平均值,以得到一个 table 这样的 table :

你能告诉我如何在 R 中做到这一点 table 吗?

考虑到您的数据框名为 df,您可以:

library(dplyr)
df %>%
  group_by(chr, i.start, i.end, coverage_con) %>%
  summarize_all(mean)

base 解决方案 aggregate():

aggregate(. ~ chr + i.start + i.end + coverage_con, df, mean)

dplyr版本:

library(dplyr)

df %>%
  group_by(chr, i.start, i.end, coverage_con) %>%
  summarise(across(.fns = mean, .names = "average_{col}"))

summarise(across(.fns = mean))等同于summarise_all(mean),但前者可以通过glue规范调整列名.


如果数据包括除那些分组列之外的其他 non-numeric 列,您可以通过 where() 仅计算那些数字列的均值,即

... %>%
  summarise(across(where(is.numeric), mean, .names = "average_{col}"))

相当于summarise_if(is.numeric, mean).