根据数据框的重复列值使 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)
.
我有一个这样的 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)
.