Hi, subject=c(1,1,1,2,2,2) visit=c(1,2,3,1,2,3) x1=c(0.5,1.2,0.7,0.4,0.6,0.1)
cum=NULL #initialize for(i in 1:length(subject)){ cum[i]=sum(x1[subject[i]==subject&visit[i]>=visit]) } I am sure there is a way with tapply or similar functions that is computationally more efficient. But if your dataset is not very large, the above function does the job very well. Cheers, Daniel ------------------------- cuncta stricte discussurus ------------------------- -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von gallon li Gesendet: Monday, November 24, 2008 2:22 AM An: r-help Betreff: [R] count the cumulative for each subject I have a data set like the following: subject visit x1 1 1 0.5 1 2 1.2 1 3 0.7 2 1 0.4 2 2 0.6 2 3 1.0 ..... where x1 is the interval between the two visits. Now I want to calculate the cumulative intervals since the beinging, for example subject visit x1 cum 1 1 0.5 0.5 1 2 1.2 0.5+1.2 1 3 0.7 0.5+1.2+0.7 2 1 0.4 0.4 2 2 0.6 0.4+0.6 2 3 1.0 0.4+0.6+1.0 ..... is there an easy to generate the last veriable cum? The number of visits for each subject may be different. I also want to choose a subset which correspond to the last observation of each subject. I am also wondering if there is a fast way to do so. [[alternative HTML version deleted]] ______________________________________________ R-help@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. ______________________________________________ R-help@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.