R中多列的平均值

Mean of Multiple Columns in R

我正在尝试取 R 中列列表的平均值,但 运行 遇到了问题。假设我有:

A B  C  D
1 2  3  4
5 6  7  8
9 10 11 12

我想做的是取 c(A,C) 列的平均值并将其保存为值 (E) 以及 c(B,D) 列的平均值并将其保存作为不同的值,比如 F。这可能吗?

E   F
2   3
6   7
10  11

我们可以用第 1 列和第 2 列对数据集进行子集化,另一个用第 3 列和第 4 列对数据集进行子集化,将它们相加,除以 2,然后用 setNames

更改列名
setNames((df1[1:2] + df1[3:4])/2, c("E", "F"))
#   E  F
#1  2  3
#2  6  7
#3 10 11

或者另一种选择是 rowMeans,通过使用回收逻辑向量将其保存在 list 中,遍历 list(使用 sapply)并获得 rowMeans

i1 <- c(TRUE, FALSE)
sapply(list(df1[i1], df1[!i1]), rowMeans)

或者另一种选择是 unlist 数据集,将其转换为 array 并使用 apply 得到 mean

apply(array(unlist(df1), c(3, 2, 2)), c(1,2), mean)

查看 dplyr:

library(dplyr)
df <- df %>% mutate(E=(A+C)/2, F=(B+D)/2)
df

  A  B  C  D  E  F
1 1  2  3  4  2  3
2 5  6  7  8  6  7
3 9 10 11 12 10 11