Скажем, у меня есть 3 кадра данных, каждый 5x5 объект как таковой:Как вычислить средства по строкам из трех многокаскадных данных?
set.seed(1)
x <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(x) <-c("a","b","c","d","e")
y <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(y) <-c("f","g","h","i","j")
z <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(z) <-c("k","l","m","n","o")
Так, х, к примеру, выглядит следующим образом:
> x
a b c d e
1 -0.6264538 -0.8204684 -0.6264538 -0.8204684 -0.6264538
2 0.1836433 0.4874291 0.1836433 0.4874291 0.1836433
3 -0.8356286 0.7383247 -0.8356286 0.7383247 -0.8356286
4 1.5952808 0.5757814 1.5952808 0.5757814 1.5952808
5 0.3295078 -0.3053884 0.3295078 -0.3053884 0.3295078
Как эффективно рассчитать средства по строкам для трех значений в одном и том же месте в каждом кадре данных? То есть, например, вычислить среднее значение для трех значений в строке 1/col 1 по кадрам данных. Легко сделать вручную, конечно. Например:
> mean(c(x$a[1],y$f[1],z$k[1]))
[1] 0.6014349
> mean(c(x$b[1],y$g[1],z$l[1]))
[1] -0.3071769
... и так далее. Но как я могу сделать это эффективно в R для гораздо больших кадров данных? Я попробовал mapply() и варианты apply() и sweep(), но не повезло. Я знаю, что есть простое решение, но у меня есть мозговой замок. Любая помощь будет принята с благодарностью!
Почему не '(х + у + г)/3' –
Так что вы хотите 25 средств? –
Ричард, да, 25 означает - матрица 5x5. –