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
我正在尝试取 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