我有一个包含超过6000个数据框的列表,每个数据框都有大约2000个变量的6000个观测值。我想要计算一个6000x2000的平均数据框,其中每个值都是该位置在所有数据框中的平均值(例如:mean.df[1,1] = mean(df1[1,1],df2[1,1],df3[1,1],.....dfN[1,1]
)
我准备了一个简短的示例来说明我的需求。
# Build list of dataframes
df.X <- data.frame("A1" = seq(1,5,1), "A2" = seq(2,10,2) , "A3" = seq(10,18,2))
df.Y <- data.frame("B1" = seq(0,8,2), "B2" = seq(4,8,1) , "B3" = seq(10,18,2))
df.Z <- data.frame("C1" = seq(2,10,2), "C2" = 1:5 , "C3" = seq(10,18,2))
df.list <- list(df.X,df.Y,df.Z)
#Desired output
m1 M2 M3
1.0 2.3 10.0
2.7 3.7 12.0
4.3 5.0 14.0
6.0 6.3 16.0
7.7 7.7 18.0
我曾尝试使用purrr
的reduce
和map
,但没有成功。也许应该使用apply函数?
提前感谢。
mean
与MARGIN = c(1,2)
代替带有MARGIN = 2
的rowMeans
或带有MARGIN = 1
的colMeans
(请参见apply
的文档)。至少在我看来,这种方法更加直观,可以计算行(1)和列(2)的平均值。 - Brzoskwiniamicrobenchmark
。我猜rowMeans
会更快,因为我们在单个 MARGIN 循环时减少了迭代次数。 - akrun