[R] means in tables

arun smartpink111 at yahoo.com
Wed Apr 10 22:30:06 CEST 2013


Hi,
This could be done in different ways:
tab1<-read.table(text="
V1  V2  V3  V4  V5
14.23 1.71 2.43 15.6 127
13.20 1.78 2.14 11.2 100
13.16 2.36 2.67 18.6 101
14.37 1.95 2.50 16.8 113
13.24 2.59 2.87 21.0 118
",sep="",header=TRUE)
tab2<-read.table(text="
V1  V2  V3  V4  V5
1.23 1.1 2.3 1.6 17
1.20 1.8 2.4 1.2 10
1.16 2.6 2.7 1.6 11
1.37 1.5 2.0 1.8 13
1.24 2.9 2.7 2.0 18
",sep="",header=TRUE)


(tab1+tab2)/2
#    V1    V2    V3   V4 V5
#1 7.73 1.405 2.365  8.6 72
#2 7.20 1.790 2.270  6.2 55
#3 7.16 2.480 2.685 10.1 56
#4 7.87 1.725 2.250  9.3 63
#5 7.24 2.745 2.785 11.5 68


#or
library(abind)
 apply(abind(list(tab1,tab2),along=3),c(1,2),mean)
#       V1    V2    V3   V4 V5
#[1,] 7.73 1.405 2.365  8.6 72
#[2,] 7.20 1.790 2.270  6.2 55
#[3,] 7.16 2.480 2.685 10.1 56
#[4,] 7.87 1.725 2.250  9.3 63
#[5,] 7.24 2.745 2.785 11.5 68


#or 

library(plyr)
dcast(adply(abind(list(tab1,tab2),along=3),c(1,2),mean),X1~X2,value.var="V1")[,-1]
#    V1    V2    V3   V4 V5
#1 7.73 1.405 2.365  8.6 72
#2 7.20 1.790 2.270  6.2 55
#3 7.16 2.480 2.685 10.1 56
#4 7.87 1.725 2.250  9.3 63
#5 7.24 2.745 2.785 11.5 68

#or
aaply(abind(list(tab1,tab2),along=3),c(1,2),mean)
#   X2
#X1    V1    V2    V3   V4 V5
 # 1 7.73 1.405 2.365  8.6 72
 # 2 7.20 1.790 2.270  6.2 55
 # 3 7.16 2.480 2.685 10.1 56
 # 4 7.87 1.725 2.250  9.3 63
 # 5 7.24 2.745 2.785 11.5 68


A.K.



----- Original Message -----
From: Silvano Cesar da Costa <silvano at uel.br>
To: r-help at r-project.org
Cc: 
Sent: Wednesday, April 10, 2013 12:07 PM
Subject: [R] means in tables

Hi.

I have 2 tables, with same dimensions (8000 x 5). Something like:

tab1:

V1   V2   V3   V4  V5
14.23 1.71 2.43 15.6 127
13.20 1.78 2.14 11.2 100
13.16 2.36 2.67 18.6 101
14.37 1.95 2.50 16.8 113
13.24 2.59 2.87 21.0 118

tab2:

V1   V2   V3   V4  V5
1.23 1.1 2.3 1.6 17
1.20 1.8 2.4 1.2 10
1.16 2.6 2.7 1.6 11
1.37 1.5 2.0 1.8 13
1.24 2.9 2.7 2.0 18

I need generate a table of averages, the elements in the same position in
both tables, like:

tab3:
(14.23 + 1.23)/2  (1.71+1.1)/2   (127+17)/2

and so on

I tried the program:

Médias = matrix(NA, nrow(tab1), ncol(tab1))
for(i in 1:nrow(tab1)){
  for(j in 1:ncol(tab1)){
    for(k in 1:nrow(tab2)){
      for(l in 1:ncol(tab2)){
        Médias = tab1$i[j]
      }}}}

Médias

but it does't  work. I don't know programming.

How can I do this?

Thanks,


---------------------------------------------
Silvano Cesar da Costa

Universidade Estadual de Londrina
Centro de Ciências Exatas
Departamento de Estatística

Fone: (43) 3371-4346

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list