[R] Conditional sum

mathijsdevaan mathijsdevaan at gmail.com
Sun Feb 20 15:40:00 CET 2011


Hi,

I have a DF like this:

DF = data.frame(read.table(textConnection("    A  B  C 
1 b1  1999  0.25
2 c1  1999  0.25
3 d1  1999  0.25
4 a2  1999  0.25
5 c2  1999  0.25
6 d2  1999  0.25
7 a3  1999  0.25
8 b3  1999  0.25
9 d3  1999  0.25
10 a4  1999  0.25
11 b4  1999  0.25
12 c4  1999  0.25
13 b1  2001  0.5
14 a2  2001  0.5
15 b1  2004  0.33
16 c1  2004  0.33
17 a2  2004  0.33
18 c2  2004  0.33
19 a3  2004  0.33
20 b3  2004  0.33
21 d2  1980  0.4
22 a3  1980  0.4
23 b4  1981  0.4
24 c1  1981  0.4"),head=TRUE,stringsAsFactors=FALSE))

For each factor in A I want to sum the values of C for all years(Bn) prior
to the current year(Bi):

1 b1  1999  0.25  0
2 c1  1999  0.25  0.4
3 d1  1999  0.25  0
4 a2  1999  0.25  0
5 c2  1999  0.25  0
6 d2  1999  0.25  0.4
7 a3  1999  0.25  0.4
8 b3  1999  0.25  0
9 d3  1999  0.25  0
10 a4 1999  0.25  0
11 b4 1999  0.25  0.4
12 c4 1999  0.25  0
13 b1 2001  0.50  0.25
14 a2 2001  0.50  0.25
15 b1 2004  0.33  0.75
16 c1 2004  0.33  0.65
17 a2 2004  0.33  0.75
18 c2 2004  0.33  0.25
19 a3 2004  0.33  0.65
20 b3 2004  0.33  0.25
21 d2 1980  0.40  0
22 a3 1980  0.40  0
23 b4 1981  0.40  0
24 c1 1981  0.40  0

If I do this - DF$D<-ave(DF$C,DF$A,FUN = function(x) sum(x)) - it returns
for each factor the sum of C for all years. How do I build the (B) condition
in this function? Thanks very much! 

-- 
View this message in context: http://r.789695.n4.nabble.com/Conditional-sum-tp3315163p3315163.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list