我正在尝试使用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
答案 0 :(得分:3)
查看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
答案 1 :(得分:2)
我们可以使用第1列和第1列对数据集进行子集化。 2,另一个3&amp; 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
)并获取{{1} }}
rowMeans
或另一个选项是i1 <- c(TRUE, FALSE)
sapply(list(df1[i1], df1[!i1]), rowMeans)
数据集,将其转换为unlist
并使用array
获取apply
mean