Here is one way of doing it:
> x <- read.table(textConnection("site distance var1 var2
+ 1 10 1 0
+ 1 20 0 1
+ 1 30 1 2
+ 1 40 3 3
+ 1 50 1 4
+ 2 10 1 1
+ 2 20 2 1
+ 2 30 4 1
+ 2 40 0 1
+ 2 50 1 1
+ n1 10 1 1
+ n1 20 1 0
+ n1 30 1 1
+ n1 40 1 0
+ n1 50 1 1 "), header=TRUE)
> closeAllConnections()
> # split by site, compute cumsum of the data columns
> x.1 <- lapply(split(x, x$site), function(.site){
+ # get the cumsum of data rows (using 3:4 for example)
+ .cum <- do.call(cbind, lapply(.site[,3:4], cumsum))
+ cbind(.site, .cum)
+ })
> # put back together (you can change the column names
> do.call(rbind, x.1)
site distance var1 var2 var1 var2
1.1 1 10 1 0 1 0
1.2 1 20 0 1 1 1
1.3 1 30 1 2 2 3
1.4 1 40 3 3 5 6
1.5 1 50 1 4 6 10
2.6 2 10 1 1 1 1
2.7 2 20 2 1 3 2
2.8 2 30 4 1 7 3
2.9 2 40 0 1 7 4
2.10 2 50 1 1 8 5
n1.11 n1 10 1 1 1 1
n1.12 n1 20 1 0 2 1
n1.13 n1 30 1 1 3 2
n1.14 n1 40 1 0 4 2
n1.15 n1 50 1 1 5 3
On Wed, Jun 17, 2009 at 11:48 AM, SEUNG CHEON HONG <[email protected]>wrote:
> Dear R-Help List,
>
> I have a question about data manipulation. I tried to make code myself but
> too much for me. I would greatly appreciate your help.
>
> I have data set consisting of site (from 1 to N1) and distance and there
> are several variables (1 to N2) collected from each sampling site. I am
> interested in looking at cumulative sums of each variable based on site and
> distance like below.
>
> Can anyone help create function to do the task? The cumulative sum outputs
> may not be necessarily combined with original data. It will be better to
> have only cumulative sum outputs and indicator variables of interest.
>
> site distance var1
var(n2) cu.sum.v1
> cu.sum.v(n2)
> 1 10 1 0 1 0
> 1 20 0 1 1 1
> 1 30 1 2 2 3
> 1 40 3 3 5 6
> 1 50 1 4 6 10
> 2 10 1 1 1 1
> 2 20 2 1 3 2
> 2 30 4 1 7 3
> 2 40 0 1 7 4
> 2 50 1 1 8 5
> ,,, ,,, ,,, ,,, ,,,
> n1 10 1 1 1 1
> n1 20 1 0 2 1
> n1 30 1 1 3 2
> n1 40 1 0 4 2
> n1 50 1 1 5 3
>
>
> Thank you very much for reading and time!!!
>
> Steve Hong
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
[[alternative HTML version deleted]]
______________________________________________
[email protected] 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.