[R] Yearly aggregates and matrices

mathijsdevaan mathijsdevaan at gmail.com
Sat Apr 9 11:14:53 CEST 2011


Hi,

I need to perform calculations on subsets of a data frame:

DF = data.frame(read.table(textConnection("    A  B  C  D  E  F 
1 a  1995  0  4  1
2 a  1997  1  1  3
3 b  1995  3  7  0
4 b  1996  1  2  3
5 b  1997  1  2  3
6 b  1998  6  0  0
7 b  1999  3  7  0
8 c  1997  1  2  3
9 c  1998  1  2  3
10 c  1999  6  0  0
11 d  1999  3  7  0
12 e  1995  1  2  3
13 e  1998  1  2  3
14 e  1999  6  0  0"),head=TRUE,stringsAsFactors=FALSE))

I'd like to create new dataframes for each unique year in which for each
value of A, the values of D, E and F are summed over the last 3 years (e.g.
1998 = 1998, 1997, 1996):
Question 1: How do I go from DF to newDFyear?

Examples:

newDF1995
B  D  E  F
a  0  4  1
b  3  7  0
e  1  2  3

newDF1998
B  D  E  F
a  1  1  3
b  8  4  6
c  2  4  6
e  1  2  3

Then, for each new DF I need to generate a square matrix after doing the
following:

newDF1998$G<-newDF1998$D + newDF1998$E + newDF1998$F
newDF1998$D<-newDF1998$D/newDF1998$G
newDF1998$E<-newDF1998$E/newDF1998$G
newDF1998$F<-newDF1998$F/newDF1998$G
newDF1998<-NewDF1998[,c(-5)]

newDF1998
B  D  E  F
a  0.2  0.2  0.6
b  0.4  0.2  0.3
c  0.2  0.3  0.5
e  0.2  0.3  0.5

Question 2: How do I go from newDF1998 to a matrix 

  a  b  c  e
a
b
c
e

in which Cell ab = (0.2*0.4 + 0.2*0.2 + 0.6*0.3)/((0.2*0.2 + 0.2*0.2 +
0.6*0.6)^0.5) * ((0.4*0.4 + 0.2*0.2 + 0.3*0.3)^0.5) = 0.84

Thanks a lot for your help!

--
View this message in context: http://r.789695.n4.nabble.com/Yearly-aggregates-and-matrices-tp3438140p3438140.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list