[R] cumulative sum by group and under some criteria

arun smartpink111 at yahoo.com
Sat Mar 2 22:38:16 CET 2013


HI,
d

#   m1 n1 x1 y1     term1_p0     term1_p1
#1   3  2  0  0 0.7737809375 0.2373046875
#2   3  2  0  1 0.0814506250 0.1582031250
#3   3  2  0  2 0.0021434375 0.0263671875
#4   3  2  1  0 0.1221759375 0.2373046875
#5   3  2  1  1 0.0128606250 0.1582031250
#6   3  2  1  2 0.0003384375 0.0263671875
#7   3  2  2  0 0.0064303125 0.0791015625
#8   3  2  2  1 0.0006768750 0.0527343750
#9   3  2  2  2 0.0000178125 0.0087890625
#10  3  2  3  0 0.0001128125 0.0087890625
#11  3  2  3  1 0.0000118750 0.0058593750
#12  3  2  3  2 0.0000003125 0.0009765625

d2
#   m1 n1 x1 y1     term1_p0     term1_p1     Qm     Qn
#1   3  2  0  0 0.7737809375 0.2373046875 0.0500 0.0810
#2   3  2  0  1 0.0814506250 0.1582031250 0.0560 0.6690
#3   3  2  0  2 0.0021434375 0.0263671875 0.0410 0.9680
#4   3  2  1  0 0.1221759375 0.2373046875 0.3150 0.3150
#5   3  2  1  1 0.0128606250 0.1582031250 0.5200 0.6580
#6   3  2  1  2 0.0003384375 0.0263671875 0.5360 0.9640
#7   3  2  2  0 0.0064303125 0.0791015625 0.4945 0.4945
#8   3  2  2  1 0.0006768750 0.0527343750 0.7815 0.7815
#9   3  2  2  2 0.0000178125 0.0087890625 0.9030 0.9650
#10  3  2  3  0 0.0001128125 0.0087890625 0.5350 0.5350
#11  3  2  3  1 0.0000118750 0.0058593750 0.8195 0.8195
#12  3  2  3  2 0.0000003125 0.0009765625 0.9835 0.9835

 lst1<- split(d2,list(d2$m1,d2$n1)) 
d3<- do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){ 
x[,9:14]<-NA; 
x[,9:10][x$Qm<=c11,]<-cumsum(x[,5:6][x$Qm<=c11,]); 
x[,11:12][x$Qn<=c12,]<-cumsum(x[,5:6][x$Qn<=c12,]);
x[,13:14]<-cumsum(x[,5:6]); 
colnames(x)[9:14]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H","sumTerm1_p0","sumTerm1_p1"); 
x1<-na.locf(x); 
x1[,9:14][is.na(x1[,9:14])]<-0; 
x1}
))
 row.names(d3)<-1:nrow(d3) 

res1<-aggregate(.~m1+n1,data=d3[,c(1:2,9:12)],max)
res1
# m1 n1 cterm1_P0L cterm1_P1L cterm1_P0H cterm1_P1H
#1  3  2  0.9795509  0.6591797  0.8959569  0.4746094
 d3New<- res1[res1[,4]<=0.60 & res1[,6]<0.40,] 
d3New
#[1] m1         n1         cterm1_P0L cterm1_P1L cterm1_P0H cterm1_P1H  # zero 0 rows
#<0 rows> (or 0-length row.names)
 library(plyr)
 d4<-join(d3New,d,by=c("m1","n1"),type="inner")
 d4
# [1] m1         n1         cterm1_P0L cterm1_P1L cterm1_P0H cterm1_P1H #zero 0 rows
# [7] x1         y1         term1_p0   term1_p1  
#<0 rows> (or 0-length row.names)

do.call(rbind,lapply(unique(d4$m1),function(m1) 
 do.call(rbind,lapply(unique(d4$n1),function(n1)
 do.call(rbind,lapply(unique(d4$x1),function(x1)
 do.call(rbind,lapply(unique(d4$y1),function(y1)
  
 #do.call(rbind,lapply(0:m1,function(x1) 
 #do.call(rbind,lapply(0:n1,function(y1) 
 do.call(rbind,lapply((m1+2):(maxN-2-n1),function(m) 
 do.call(rbind,lapply((n1+2):(maxN-m),function(n) 
 do.call(rbind,lapply(x1:(x1+m-m1), function(x) 
 do.call(rbind,lapply(y1:(y1+n-n1), function(y)
 expand.grid(m1,n1,x1,y1,m,n,x,y)) )))))))))))))))
#NULL




A.K.
________________________________
From: Joanna Zhang <zjoanna2013 at gmail.com>
To: arun <smartpink111 at yahoo.com> 
Sent: Saturday, March 2, 2013 3:59 PM
Subject: Re: [R] cumulative sum by group and under some criteria


I can't figure out why there is an error for names (): Error in names(res2) <- c("m1", "n1", "x1", "y1", "m", "n", "x", "y") : 
  attempt to set an attribute on NULL




maxN<-9
c11<-0.4
c12<-0.4
c1<-0.5
c2<-0.5

p0L<-0.05
p0H<-0.05
p1L<-0.25
p1H<-0.25

alpha<-0.20
beta<-0.80

result <- vector("list",5)
result

for (a in 2: (maxN-6)) {
d <- data.frame ()
for ( m1 in a:a) {
       for (n1 in 2: (maxN-m1-4)){
          for (x1 in 0: m1) {
               for (y1 in 0: n1) {


                       term1_p0 = dbinom(x1,m1, p0L, log=FALSE)* dbinom(y1,n1,p0H, log=FALSE)
                       term1_p1 = dbinom(x1,m1, p1L, log=FALSE)* dbinom(y1,n1,p1H, log=FALSE)                                                         

                       d<-rbind(d, c(m1,n1,x1,y1,term1_p0,term1_p1))
}}
}}
colnames(d)<-c("m1","n1","x1","y1","term1_p0","term1_p1") 
tail(d)

set.seed(8)
d1<-do.call(rbind,lapply(seq_len(nrow(d)),function(i){
Pm<- rbeta(1000,0.2+d[i,"x1"],0.8+d[i,"m1"]-d[i,"x1"]);
Pn<- rbeta(1000,0.2+d[i,"y1"],0.8+d[i,"n1"]-d[i,"y1"]);
Fm<- ecdf(Pm);
Fn<- ecdf(Pn);
#Fmm<- Fm(d[i,"p11"]);
#Fnn<- Fn(d[i,"p12"]);

Fmm<- Fm(p1L);
Fnn<- Fn(p1H);

R<- (Fmm+Fnn)/2; 
Fmm_f<- max(R, Fmm);
Fnn_f<- min(R, Fnn);
Qm<- 1-Fmm_f;
Qn<- 1-Fnn_f;
data.frame(Qm,Qn)}))
d2<-cbind(d,d1)
head(d2)


library(zoo)
lst1<- split(d2,list(d$m1,d$n1)) 
d2<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){ 
x[,9:14]<-NA; 
x[,9:10][x$Qm<=c11,]<-cumsum(x[,5:6][x$Qm<=c11,]); 
x[,11:12][x$Qn<=c12,]<-cumsum(x[,5:6][x$Qn<=c12,]);
x[,13:14]<-cumsum(x[,5:6]); 
colnames(x)[9:14]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H","sumTerm1_p0","sumTerm1_p1"); 
x1<-na.locf(x); 
x1[,9:14][is.na(x1[,9:14])]<-0; 
x1}
)) 
row.names(d2)<-1:nrow(d2) 
tail(d2)

res1<-aggregate(.~m1+n1,data=d2[,c(1:2,9:12)],max)
head(res1)

d3<-res1[res1[,4]<=0.60 & res1[,6]<0.40,] 
tail(d3)

library(plyr) 
d4<- join(d3,d,by=c("m1","n1"),type="inner")
head(d4) 
tail(d4)

res2<-do.call(rbind,lapply(unique(d4$m1),function(m1) 
do.call(rbind,lapply(unique(d4$n1),function(n1)
do.call(rbind,lapply(unique(d4$x1),function(x1)
do.call(rbind,lapply(unique(d4$y1),function(y1)

#do.call(rbind,lapply(0:m1,function(x1) 
#do.call(rbind,lapply(0:n1,function(y1) 
do.call(rbind,lapply((m1+2):(maxN-2-n1),function(m) 
do.call(rbind,lapply((n1+2):(maxN-m),function(n) 
do.call(rbind,lapply(x1:(x1+m-m1), function(x) 
do.call(rbind,lapply(y1:(y1+n-n1), function(y)
expand.grid(m1,n1,x1,y1,m,n,x,y)) )))))))))))))))

names(res2)<- c("m1","n1","x1","y1","m","n","x","y")
attr(res2,"out.attrs")<-NULL 
tail(res2)
result[[a]]<-res2
}
result




On Sat, Mar 2, 2013 at 1:05 PM, arun <smartpink111 at yahoo.com> wrote:

Alright, then go ahead and use a loop.
>
>A.K.
>
>
>
>
>
>
>________________________________
>From: Joanna Zhang <zjoanna2013 at gmail.com>
>To: arun <smartpink111 at yahoo.com>
>Sent: Saturday, March 2, 2013 1:53 PM
>
>Subject: Re: [R] cumulative sum by group and under some criteria
>
>
>Thank you! When I run my real data, there was a warning massage 'lack of memory'. I am thinking that I can use a loop to run the same code for each part of the data. But I need to keep each output data "d2" and combine them. 
>
>for example:
>
>maxN<-9
>c11<-0.4
>c12<-0.4
>
>p0L<-0.05
>p0H<-0.05
>p1L<-0.25
>p1H<-0.25
>
>
>for (a in 2: (maxN-6)) {
>d <- data.frame ()
>for ( m1 in a:a) {
>     for (n1 in 2: (maxN-m1-4)){
>          for (x1 in 0: m1) {
>               for (y1 in 0: n1) {
>                       p11<- (x1/m1)
>                       p12<- (y1/n1)                             
>
>                       term1_p0 = dbinom(x1,m1, p0L, log=FALSE)* dbinom(y1,n1,p0H, log=FALSE)
>                       term1_p1 = dbinom(x1,m1, p1L, log=FALSE)* dbinom(y1,n1,p1H, log=FALSE)                                                         
>
>                       d<-rbind(d, c(m1,n1,x1,y1,p11,p12,term1_p0,term1_p1))
>}}
>}}
>colnames(d)<-c("m1","n1","x1","y1","p11","p12","term1_p0","term1_p1") 
>tail(d)
>
>set.seed(8)
>d1<-do.call(rbind,lapply(seq_len(nrow(d)),function(i){
>Pm<- rbeta(1000,0.2+d[i,"x1"],0.8+d[i,"m1"]-d[i,"x1"]);
>Pn<- rbeta(1000,0.2+d[i,"y1"],0.8+d[i,"n1"]-d[i,"y1"]);
>Fm<- ecdf(Pm);
>Fn<- ecdf(Pn);
>
>Fmm<- Fm(p1L);
>Fnn<- Fn(p1H);
>
>R<- (Fmm+Fnn)/2; 
>Fmm_f<- max(R, Fmm);
>Fnn_f<- min(R, Fnn);
>Qm<- 1-Fmm_f;
>Qn<- 1-Fnn_f;
>data.frame(Qm,Qn)}))
>d2<-cbind(d,d1)
>head(d2)                        # need to name "d2" using the value of a (or another way) to distinguish from each other  
>}
>
># combine all "d2" here
>
>
>
>On Fri, Mar 1, 2013 at 12:51 PM, arun <smartpink111 at yahoo.com> wrote:
>
>
>>
>>Hi,
>>
>>It seems like you haven't even looked at the output of d2, (first d2)
>>d2<- cbind(d,d1)
>>head(d2,3)
>>#  m1 n1 x1 y1 p11 p12   term1_p0   term1_p1    Qm    Qn
>>#1  2  2  0  0   0 0.0 0.81450625 0.31640625 1.000 1.000
>>#2  2  2  0  1   0 0.5 0.08573750 0.21093750 0.666 0.666
>>#3  2  2  0  2   0 1.0 0.00225625 0.03515625 0.500 0.500
>> ncol(d2)  # you have only 10 columns in d2
>>#[1] 10
>>
>>
>>#2nd problem:
>>You are splitting using d
>>
>>###############Your code
>>
>>library(zoo)
>>lst1<- split(d,list(d$m1,d$n1)) # should split byd2, because `d` doesn't have Qm or Qn columns 
>>d2<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){
>>x[,13:18]<-NA; #### this code was created for another dataset which obviously had 12 columns
>>x[,13:14][x$Qm<=c11,]<-cumsum(x[,11:12][x$Qm<=c11,]); #### here your term1_p0 and term1_p1 are columns 7 and 8.
>>
>>x[,15:16][x$Qn<=c12,]<-cumsum(x[,11:12][x$Qn<=c12,]);
>>x[,17:18]<-cumsum(x[,11:12]);
>>colnames(x)[13:18]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H","sumTerm1_p0","sumTerm1_p1");
>>x1<-na.locf(x);
>>x1[,13:18][is.na(x1[,13:18])]<-0;
>>x1}
>>))
>>##########################################
>>
>>
>>#corrected codes:
>>
>>lst1<- split(d2,list(d2$m1,d2$n1))
>>
>>dNew<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){
>>x[,11:16]<-NA;
>>x[,11:12][x$Qm<=c11,]<-cumsum(x[,7:8][x$Qm<=c11,]);
>>x[,13:14][x$Qn<=c12,]<-cumsum(x[,7:8][x$Qn<=c12,]);
>>x[,15:16]<-cumsum(x[,7:8]);
>>colnames(x)[11:16]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H","sumTerm1_p0","sumTerm1_p1");
>>x1<-na.locf(x);
>>x1[,11:16][is.na(x1[,11:16])]<-0;
>>x1}
>>))
>> row.names(dNew)<- 1:nrow(dNew)
>> head(dNew,3)
>>#  m1 n1 x1 y1 p11 p12   term1_p0   term1_p1    Qm    Qn cterm1_P0L cterm1_P1L
>>#1  2  2  0  0   0 0.0 0.81450625 0.31640625 1.000 1.000          0          0
>>#2  2  2  0  1   0 0.5 0.08573750 0.21093750 0.666 0.666          0          0
>>#3  2  2  0  2   0 1.0 0.00225625 0.03515625 0.500 0.500          0          0
>>#  cterm1_P0H cterm1_P1H sumTerm1_p0 sumTerm1_p1
>>#1          0          0   0.8145062   0.3164062
>>#2          0          0   0.9002438   0.5273438
>>#3          0          0   0.9025000   0.5625000
>>
>>
>>A.K.
>>
>>
>>________________________________
>>
>>From: Joanna Zhang <zjoanna2013 at gmail.com>
>>To: arun <smartpink111 at yahoo.com>
>>Sent: Friday, March 1, 2013 11:40 AM
>>
>>Subject: Re: [R] cumulative sum by group and under some criteria
>>
>>
>>Hi, why there is an error when I run the cumulative sum code below?
>>
>>Error in `[<-.data.frame`(`*tmp*`, , 16:21, value = NA) :
>>  new columns would leave holes after existing columns
>>
>>
>>maxN<-9
>>c11<-0.4
>>c12<-0.4
>>c1<-0.5
>>c2<-0.5
>>p0L<-0.05
>>p0H<-0.05
>>p1L<-0.25
>>p1H<-0.25
>>
>>d <- data.frame ()
>>for ( m1 in 2: (maxN-6)) {
>>     for (n1 in 2: (maxN-m1-4)){
>>          for (x1 in 0: m1) {
>>               for (y1 in 0: n1) {
>>                       p11<- (x1/m1)
>>                       p12<- (y1/n1)                            
>>
>>                       term1_p0 = dbinom(x1,m1, p0L, log=FALSE)* dbinom(y1,n1,p0H, log=FALSE)
>>                       term1_p1 = dbinom(x1,m1, p1L, log=FALSE)* dbinom(y1,n1,p1H, log=FALSE)                                                        
>>
>>                       d<-rbind(d, c(m1,n1,x1,y1,p11,p12,term1_p0,term1_p1))
>>}}
>>}}
>>colnames(d)<-c("m1","n1","x1","y1","p11","p12","term1_p0","term1_p1")
>>d
>>tail(d)
>>set.seed(8)
>>d1<-do.call(rbind,lapply(seq_len(nrow(d)),function(i){
>>Pm<- rbeta(1000,0.2+d[i,"x1"],0.8+d[i,"m1"]-d[i,"x1"]);
>>Pn<- rbeta(1000,0.2+d[i,"y1"],0.8+d[i,"n1"]-d[i,"y1"]);
>>Fm<- ecdf(Pm);
>>Fn<- ecdf(Pn);
>>Fmm<- Fm(d[i,"p11"]);
>>Fnn<- Fn(d[i,"p12"]);
>>R<- (Fmm+Fnn)/2;
>>Fmm_f<- max(R, Fmm);
>>Fnn_f<- min(R, Fnn);
>>Qm<- 1-Fmm_f;
>>Qn<- 1-Fnn_f;
>>data.frame(Qm,Qn)}))
>>d2<-cbind(d,d1)
>>d2
>>
>>library(zoo)
>>lst1<- split(d,list(d$m1,d$n1))
>>d2<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){
>>x[,13:18]<-NA;
>>x[,13:14][x$Qm<=c11,]<-cumsum(x[,11:12][x$Qm<=c11,]);
>>x[,15:16][x$Qn<=c12,]<-cumsum(x[,11:12][x$Qn<=c12,]);
>>x[,17:18]<-cumsum(x[,11:12]);
>>colnames(x)[13:18]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H","sumTerm1_p0","sumTerm1_p1");
>>x1<-na.locf(x);
>>x1[,13:18][is.na(x1[,13:18])]<-0;
>>x1}
>>))
>>
>>
>>
>>
>>On Tue, Feb 26, 2013 at 8:56 PM, arun <smartpink111 at yahoo.com> wrote:
>>
>>??
>>>
>>>
>>>
>>>________________________________
>>> From: Joanna Zhang <zjoanna2013 at gmail.com>
>>>To: arun <smartpink111 at yahoo.com>
>>>Sent: Tuesday, February 26, 2013 9:51 PM
>>>
>>>Subject: Re: [R] cumulative sum by group and under some criteria
>>>
>>>
>>>
>>>Hi,
>>>
>>>#
>>>Pm2<-rbeta(1000, 0.2+1, 0.8+3) #obs4 
>>>this is for x=1, m=2
>>>
>>> length(Pm2)
>>>>#[1] 1000
>>>>
>>>>
>>>>Pn2<-rbeta(1000, 0.2, 0.8+4)
>>>> length(Pn2)
>>>>#[1] 1000
>>>>Here, you are creating Pm2 or Pn2 from a single observation.
>>>>
>>>>In the code, it is creating 1000 values in total from the combination of values from x, m,
>>>> Pm2<-rbeta(1000, 0.2+res2$x, 0.8+res2$m-res2$x)
>>>> length(Pm2)
>>>>#[1] 1000
>>>>
>>>>I don't get it here. What values of x and m are used here? I thought it should create 1000 observations for each combination of x,m in the data and this is what I want.
>>>>
>>> 
>>>A.K.
>>>>
>>>>
>>>>
>>>>----- Original Message -----
>>>>
>>>>From: Zjoanna <Zjoanna2013 at gmail.com>
>>>>To: r-help at r-project.org
>>>>Cc:
>>>>
>>>>Sent: Tuesday, February 26, 2013 3:13 PM
>>>>Subject: Re: [R] cumulative sum by group and under some criteria
>>>>
>>>>
>>>>Hi Arun
>>>>
>>>>I noticed that the values of Fmm, Fnn, and other corresponding variables
>>>>are not correct, for example,  for the 4th obs after you run this code, the
>>>>Fmm is 0.40,  but if you use the x, m, y, n in the 4th row to calculate
>>>>them, the results are not consistent, same for the 5th obs.
>>>>
>>>>#check
>>>>#
>>>>Pm2<-rbeta(1000, 0.2+1, 0.8+3) #obs4
>>>>Pn2<-rbeta(1000, 0.2, 0.8+4)
>>>>Fm2<- ecdf(Pm2)
>>>>Fn2<- ecdf(Pn2)
>>>>Fmm2<-Fm2(1/4)
>>>>Fnn2<-Fn2(0)
>>>>Fmm2  #0.582
>>>>Fnn2   #0
>>>>
>>>>
>>>>Pm2<-rbeta(1000, 0.2+1, 0.8+3) #obs5
>>>>Pn2<-rbeta(1000, 0.2+1, 0.8+3)
>>>>Fm2<- ecdf(Pm2)
>>>>Fn2<- ecdf(Pn2)
>>>>Fmm2<-Fm2(1/4)
>>>>Fnn2<-Fn2(1/4)
>>>>Fmm2 #0.404
>>>>Fnn2  #0.416
>>>>
>>>>
>>>>
>>>>On Sat, Feb 23, 2013 at 10:53 PM, arun kirshna [via R] <
>>>>ml-node+s789695n4659514h45 at n4.nabble.com> wrote:
>>>>
>>>>> Hi,
>>>>> d3<-structure(list(m1 = c(2, 3, 2), n1 = c(2, 2, 3), cterm1_P0L =
>>>>> c(0.9025,
>>>>> 0.857375, 0.9025), cterm1_P1L = c(0.64, 0.512, 0.64), cterm1_P0H =
>>>>> c(0.9025,
>>>>> 0.9025, 0.857375), cterm1_P1H = c(0.64, 0.64, 0.512)), .Names = c("m1",
>>>>> "n1", "cterm1_P0L", "cterm1_P1L", "cterm1_P0H", "cterm1_P1H"), row.names =
>>>>> c(NA,
>>>>> 3L), class = "data.frame")
>>>>> d2<- data.frame()
>>>>> for (m1 in 2:3) {
>>>>>     for (n1 in 2:3) {
>>>>>         for (x1 in 0:(m1-1)) {
>>>>>             for (y1 in 0:(n1-1)) {
>>>>>         for (m in (m1+2): (7-n1)){
>>>>>                for (n in (n1+2):(9-m)){
>>>>>                for (x in x1:(x1+m-m1)){
>>>>>              for(y in y1:(y1+n-n1)){
>>>>>  d2<- rbind(d2,c(m1,n1,x1,y1,m,n,x,y))
>>>>>  }}}}}}}}
>>>>> colnames(d2)<-c("m1","n1","x1","y1","m","n","x","y")
>>>>>  #or
>>>>>
>>>>> res1<-do.call(rbind,lapply(unique(d3$m1),function(m1)
>>>>>  do.call(rbind,lapply(unique(d3$n1),function(n1)
>>>>>  do.call(rbind,lapply(0:(m1-1),function(x1)
>>>>>  do.call(rbind,lapply(0:(n1-1),function(y1)
>>>>>  do.call(rbind,lapply((m1+2):(7-n1),function(m)
>>>>>  do.call(rbind,lapply((n1+2):(9-m),function(n)
>>>>>  do.call(rbind,lapply(x1:(x1+m-m1), function(x)
>>>>>  do.call(rbind,lapply(y1:(y1+n-n1), function(y)
>>>>>  expand.grid(m1,n1,x1,y1,m,n,x,y)) )))))))))))))))
>>>>>  names(res1)<- c("m1","n1","x1","y1","m","n","x","y")
>>>>>  attr(res1,"out.attrs")<-NULL
>>>>> res1[]<- sapply(res1,as.integer)
>>>>>
>>>>> library(plyr)
>>>>> res2<- join(res1,d3,by=c("m1","n1"),type="inner")
>>>>>
>>>>> #Assuming that these are the values you used:
>>>>>
>>>>> p0L<-0.05
>>>>> p0H<-0.05
>>>>> p1L<-0.20
>>>>> p1H<-0.20
>>>>> res2<- within(res2,{p1<- x/m; p2<- y/n;term2_p0<-dbinom(x1,m1, p0L,
>>>>> log=FALSE)* dbinom(y1,n1,p0H, log=FALSE)*dbinom(x-x1,m-m1, p0L, log=FALSE)*
>>>>> dbinom(y-y1,n-n1,p0H, log=FALSE);term2_p1<- dbinom(x1,m1, p1L, log=FALSE)*
>>>>> dbinom(y1,n1,p1H, log=FALSE)*dbinom(x-x1,m-m1, p1L, log=FALSE)*
>>>>> dbinom(y-y1,n-n1,p1H, log=FALSE);Pm2<-rbeta(240, 0.2+x,
>>>>> 0.8+m-x);Pn2<-rbeta(240, 0.2+y, 0.8+n-y)})
>>>>> Fm2<- ecdf(res2$Pm2)
>>>>> Fn2<- ecdf(res2$Pn2)
>>>>>
>>>>> res3<- within(res2,{Fmm2<-Fm2(p1);Fnn2<- Fn2(p2);R2<- (Fmm2+Fnn2)/2}) #not
>>>>> sure about this step especially the Fm2() or Fn2()
>>>>> res3$Fmm_f2<-apply(res3[,c("R2","Fmm2")],1,min)
>>>>>  res3$Fnn_f2<-apply(res3[,c("R2","Fnn2")],1,max)
>>>>> res3<- within(res3,{Qm2<- 1-Fmm_f2;Qn2<- 1-Fnn_f2})
>>>>> head(res3)
>>>>> #  m1 n1 x1 y1 m n x y cterm1_P0L cterm1_P1L cterm1_P0H cterm1_P1H
>>>>> Pn2
>>>>> #1  2  2  0  0 4 4 0 0     0.9025       0.64     0.9025       0.64
>>>>> 0.001084648
>>>>> #2  2  2  0  0 4 4 0 1     0.9025       0.64     0.9025       0.64
>>>>> 0.504593909
>>>>> #3  2  2  0  0 4 4 0 2     0.9025       0.64     0.9025       0.64
>>>>> 0.541379357
>>>>> #4  2  2  0  0 4 4 1 0     0.9025       0.64     0.9025       0.64
>>>>> 0.138947785
>>>>> #5  2  2  0  0 4 4 1 1     0.9025       0.64     0.9025       0.64
>>>>> 0.272364957
>>>>> #6  2  2  0  0 4 4 1 2     0.9025       0.64     0.9025       0.64
>>>>> 0.761635059
>>>>> #           Pm2   term2_p1     term2_p0   p2   p1        R2      Fnn2 Fmm2
>>>>> #1 1.212348e-05 0.16777216 0.6634204313 0.00 0.00 0.0000000 0.0000000  0.0
>>>>> #2 1.007697e-03 0.08388608 0.0698337296 0.25 0.00 0.1791667 0.3583333  0.0
>>>>> #3 1.106946e-05 0.01048576 0.0018377297 0.50 0.00 0.3479167 0.6958333  0.0
>>>>> # 2.086758e-01 0.08388608 0.0698337296 0.00 0.25 0.2000000 0.0000000  0.4
>>>>> #5 2.382179e-01 0.04194304 0.0073509189 0.25 0.25 0.3791667 0.3583333  0.4
>>>>> #6 4.494673e-01 0.00524288 0.0001934452 0.50 0.25 0.5479167 0.6958333  0.4
>>>>> #     Fmm_f2    Fnn_f2       Qn2       Qm2
>>>>> #1 0.0000000 0.0000000 1.0000000 1.0000000
>>>>> #2 0.0000000 0.3583333 0.6416667 1.0000000
>>>>> #3 0.0000000 0.6958333 0.3041667 1.0000000
>>>>> #4 0.2000000 0.2000000 0.8000000 0.8000000
>>>>> #5 0.3791667 0.3791667 0.6208333 0.6208333
>>>>> #6 0.4000000 0.6958333 0.3041667 0.6000000
>>>>>
>>>>>
>>>>> A.K.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ________________________________
>>>>> From: Joanna Zhang <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=0>>
>>>>>
>>>>> To: arun <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=1>>
>>>>
>>>>>
>>>>> Sent: Friday, February 22, 2013 11:02 AM
>>>>> Subject: Re: [R] cumulative sum by group and under some criteria
>>>>>
>>>>>
>>>>> Thanks!  Then I need to create new variables based on the res2.  I can't
>>>>> find Fmm_f1, Fnn_f2, R2, Qm2, Qn2 until  running the code several times and
>>>>> the values of Fnn_f2, Fmm_f2 are correct.
>>>>>
>>>>> attach(res2)
>>>>> res2$p1<-x/m
>>>>> res2$p2<-y/n
>>>>> res2$term2_p0 <- dbinom(x1,m1, p0L, log=FALSE)* dbinom(y1,n1,p0H,
>>>>> log=FALSE)*dbinom(x-x1,m-m1, p0L, log=FALSE)* dbinom(y-y1,n-n1,p0H,
>>>>> log=FALSE)
>>>>> res2$term2_p1 <- dbinom(x1,m1, p1L, log=FALSE)* dbinom(y1,n1,p1H,
>>>>> log=FALSE)*dbinom(x-x1,m-m1, p1L, log=FALSE)* dbinom(y-y1,n-n1,p1H,
>>>>> log=FALSE)
>>>>> Pm2<-rbeta(1000, 0.2+x, 0.8+m-x)
>>>>> Fm2<-ecdf(Pm2)
>>>>> res2$Fmm2<-Fm2(x/m)  #not correct, it comes out after running code two
>>>>> times
>>>>> Pn2<-rbeta(1000, 0.2+y, 0.8+n-y)
>>>>> Fn2<-ecdf(Pn2)
>>>>> res2$Fnn2<-Fn2(y/n)
>>>>> res2$R2<-(Fmm2+Fnn2)/2
>>>>> res2$Fmm_f2<-min(R2,Fmm2)  # not correct
>>>>> res2$Fnn_f2<-max(R2,Fnn2)
>>>>> res2$Qm2<-(1-Fmm_f2)
>>>>> res2$Qn2<-(1-Fnn_f2)
>>>>> detach(res2)
>>>>> res2
>>>>> head(res2)
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Feb 19, 2013 at 4:09 PM, arun <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=2>>
>>>>
>>>>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> >
>>>>> >""suppose that I have a dataset 'd'
>>>>> >   m1  n1    A             B     C         D
>>>>> >1  2  2   0.902500    0.640   0.9025    0.64
>>>>> >2  3  2   0.857375    0.512   0.9025    0.64
>>>>> >I want to add  x1 (from 0 to m1), y1(from 0 to n1), m (range from
>>>>> >m1+2 to 7-n1), n(from n1+2 to 9-m), x (x1 to x1+m-m1), y(y1 to y1+n-n1),
>>>>> expanding to another dataset 'd2' based on each row (combination of m1
>>>>> >and n1)""
>>>>> >
>>>>> >
>>>>> >Try:
>>>>> >
>>>>> >
>>>>> > d<-read.table(text="
>>>>> >
>>>>> >m1  n1    A             B     C         D
>>>>> >1  2  2   0.902500    0.640   0.9025    0.64
>>>>> >2  3  2   0.857375    0.512   0.9025    0.64
>>>>> >",sep="",header=TRUE)
>>>>> >
>>>>> >vec1<- paste(d[,1],d[,2],d[,3],d[,4],d[,5],d[,6])
>>>>> >res1<- do.call(rbind,lapply(vec1,function(m1)
>>>>> do.call(rbind,lapply(0:(as.numeric(substr(m1,1,1))),function(x1)
>>>>> do.call(rbind,lapply(0:(as.numeric(substr(m1,3,3))),function(y1)
>>>>> do.call(rbind,lapply((as.numeric(substr(m1,1,1))+2):(7-as.numeric(substr(m1,3,3))),function(m)
>>>>> do.call(rbind,lapply((as.numeric(substr(m1,3,3))+2):(9-m),function(n)
>>>>> >
>>>>> > do.call(rbind,lapply(x1:(x1+m-as.numeric(substr(m1,1,1))), function(x)
>>>>> > do.call(rbind,lapply(y1:(y1+n-as.numeric(substr(m1,3,3))), function(y)
>>>>> > expand.grid(m1,x1,y1,m,n,x,y)) )))))))))))))
>>>>> >
>>>>> names(res1)<- c("group","x1","y1","m","n","x","y")
>>>>>
>>>>> > res1$m1<- NA; res1$n1<- NA; res1$A<- NA; res1$B<- NA; res1$C<- NA;res1$D
>>>>> <- NA
>>>>> >res1[,8:13]<-do.call(rbind,lapply(strsplit(as.character(res1$group),"
>>>>> "),as.numeric))
>>>>> >res2<- res1[,c(8:9,2:7,10:13)]
>>>>> >
>>>>> >
>>>>> > head(res2)
>>>>> >#  m1 n1 x1 y1 m n x y      A    B      C    D
>>>>> >#1  2  2  0  0 4 4 0 0 0.9025 0.64 0.9025 0.64
>>>>> >#2  2  2  0  0 4 4 0 1 0.9025 0.64 0.9025 0.64
>>>>> >#3  2  2  0  0 4 4 0 2 0.9025 0.64 0.9025 0.64
>>>>> >#4  2  2  0  0 4 4 1 0 0.9025 0.64 0.9025 0.64
>>>>> >#5  2  2  0  0 4 4 1 1 0.9025 0.64 0.9025 0.64
>>>>> >#6  2  2  0  0 4 4 1 2 0.9025 0.64 0.9025 0.64
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >________________________________
>>>>> >From: Joanna Zhang <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=3>>
>>>>>
>>>>> >To: arun <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=4>>
>>>>
>>>>>
>>>>> >Sent: Tuesday, February 19, 2013 11:43 AM
>>>>> >
>>>>> >Subject: Re: [R] cumulative sum by group and under some criteria
>>>>> >
>>>>> >
>>>>> >Thanks. I can get the data I expected (get rid of the m1=3, n1=3) using
>>>>> the join and 'inner' code, but just curious about the way to expand the
>>>>> data. There should be a way to expand the data based on each row
>>>>> (combination of the variables), unique(d3$m1 & d3$n1) ?.
>>>>> >
>>>>> >or is there a way to use 'data.frame' and 'for' loop to expand directly
>>>>> from the data? like res1<-data.frame (d3) for () {....
>>>>> >
>>>>> >
>>>>> >On Tue, Feb 19, 2013 at 9:55 AM, arun <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=5>>
>>>>
>>>>> wrote:
>>>>> >
>>>>> >If you can provide me the output that you expect with all the rows of the
>>>>> combination in the res2, I can take a look.
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >>________________________________
>>>>> >>
>>>>> >>From: Joanna Zhang <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=6>>
>>>>>
>>>>> >>To: arun <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=7>>
>>>>
>>>>>
>>>>> >>
>>>>>  >>Sent: Tuesday, February 19, 2013 10:42 AM
>>>>> >>
>>>>> >>Subject: Re: [R] cumulative sum by group and under some criteria
>>>>> >>
>>>>> >>
>>>>> >>Thanks. But I thougth the expanded dataset 'res1' should not have
>>>>> combination of m1=3 and n1=3 because it is based on dataset 'd3' which
>>>>> doesn't have m1=3 and n1=3, right?>
>>>>> >>>In the example that you provided:
>>>>> >>> (m1+2):(maxN-(n1+2))
>>>>> >>>#[1] 5
>>>>> >>> (n1+2):(maxN-5)
>>>>> >>>#[1] 4
>>>>> >>>#Suppose
>>>>> >>> x1<- 4
>>>>> >>> y1<- 2
>>>>> >>> x1:(x1+5-m1)
>>>>> >>>#[1] 4 5 6
>>>>> >>> y1:(y1+4-n1)
>>>>> >>>#[1] 2 3 4
>>>>> >>>
>>>>> >>> datnew<-expand.grid(5,4,4:6,2:4)
>>>>> >>> colnames(datnew)<- c("m","n","x","y")
>>>>> >>>datnew<-within(datnew,{p1<- x/m;p2<-y/n})
>>>>> >>>res<-cbind(datnew,d2[rep(1:nrow(d2),nrow(datnew)),])
>>>>> >>> row.names(res)<- 1:nrow(res)
>>>>> >>> res
>>>>> >>>#  m n x y   p2  p1 m1 n1 cterm1_P1L cterm1_P0H
>>>>> >>>#1 5 4 4 2 0.50 0.8  3  2    0.00032     0.0025
>>>>> >>>#2 5 4 5 2 0.50 1.0  3  2    0.00032     0.0025
>>>>> >>>#3 5 4 6 2 0.50 1.2  3  2    0.00032     0.0025
>>>>> >>>#4 5 4 4 3 0.75 0.8  3  2    0.00032     0.0025
>>>>> >>>#5 5 4 5 3 0.75 1.0  3  2    0.00032     0.0025
>>>>> >>>#6 5 4 6 3 0.75 1.2  3  2    0.00032     0.0025
>>>>> >>>#7 5 4 4 4 1.00 0.8  3  2    0.00032     0.0025
>>>>> >>>#8 5 4 5 4 1.00 1.0  3  2    0.00032     0.0025
>>>>> >>>#9 5 4 6 4 1.00 1.2  3  2    0.00032     0.0025
>>>>> >>>
>>>>> >>>A.K.
>>>>> >>>
>>>>> >>>
>>>>> >>>
>>>>> >>>
>>>>> >>>
>>>>> >>>----- Original Message -----
>>>>> >>>From: Zjoanna <[hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=8>>
>>>>>
>>>>> >>>To: [hidden email]<http://user/SendEmail.jtp?type=node&node=4659514&i=9>
>>>>
>>>>> >>>Cc:
>>>>> >>>
>>>>> >>>Sent: Sunday, February 10, 2013 6:04 PM
>>>>> >>>Subject: Re: [R] cumulative sum by group and under some criteria
>>>>> >>>
>>>>> >>>
>>>>> >>>Hi,
>>>>> >>>How to expand or loop for one variable n based on another variable? for
>>>>> >>>example, I want to add m (from m1 to maxN- n1-2) and for each m, I want
>>>>> to
>>>>> >>>add n (n1+2 to maxN-m), and similarly add x and y, then I need to do
>>>>> some
>>>>> >>>calculations.
>>>>> >>>
>>>>> >>>d3<-data.frame(d2)
>>>>> >>>    for (m in (m1+2):(maxN-(n1+2)){
>>>>> >>>       for (n in (n1+2):(maxN-m)){
>>>>> >>>             for (x in x1:(x1+m-m1)){
>>>>> >>>                  for (y in y1:(y1+n-n1)){
>>>>> >>>                       p1<- x/m
>>>>> >>>                       p2<- y/n
>>>>> >>>}}}}
>>>>> >>>
>>>>> >>>On Thu, Feb 7, 2013 at 12:16 AM, arun kirshna [via R] <
>>>>>  >>>[hidden email] <http://user/SendEmail.jtp?type=node&node=4659514&i=10>>
>>>>
>>>>> wrote:
>>>>> >>>
>>>>> >>>> Hi,
>>>>> >>>>
>>>>> >>>> Anyway, just using some random combinations:
>>>>> >>>>  dnew<- expand.grid(4:10,5:10,6:10,3:7,4:5,6:8)
>>>>> >>>> names(dnew)<-c("m","n","x1","y1","x","y")
>>>>> >>>> resF<- cbind(dnew,d2[rep(1:nrow(d2),nrow(dnew)),])
>>>>> >>>>
>>>>> >>>>  row.names(resF)<- 1:nrow(resF)
>>>>> >>>>  head(resF)
>>>>> >>>> #  m n x1 y1 x y m1 n1 cterm1_P1L cterm1_P0H
>>>>> >>>> #1 4 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>> #2 5 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>> #3 6 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>> #4 7 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>> #5 8 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>> #6 9 5  6  3 4 6  3  2    0.00032     0.0025
>>>>> >>>>
>>>>> >>>>  nrow(resF)
>>>>> >>>> #[1] 6300
>>>>> >>>> I am not sure what you want to do with this.
>>>>> >>>> A.K.
>>>>> >>>> ________________________________
>>>>> >>>> From: Joanna Zhang <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=0>>
>>>>> >>>>
>>>>> >>>> To: arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=1>>
>>>>> >>>
>>>>> >>>>
>>>>> >>>> Sent: Wednesday, February 6, 2013 10:29 AM
>>>>> >>>> Subject: Re: cumulative sum by group and under some criteria
>>>>> >>>>
>>>>> >>>>
>>>>> >>>> Hi,
>>>>> >>>>
>>>>> >>>> Thanks! I need to do some calculations in the expended data, the
>>>>> expended
>>>>> >>>> data would be very large, what is an efficient way, doing
>>>>> calculations
>>>>> >>>> while expending the data, something similiar with the following, or
>>>>> >>>> expending data using the code in your message and then add
>>>>> calculations in
>>>>> >>>> the expended data?
>>>>> >>>>
>>>>> >>>> d3<-data.frame(d2)
>>>>> >>>>    for .......{
>>>>> >>>>          for {
>>>>> >>>>               for .... {
>>>>> >>>>                   for .....{
>>>>> >>>>                        p1<- x/m
>>>>> >>>>                        p2<- y/n
>>>>> >>>>                       ..........
>>>>> >>>> }}
>>>>> >>>> }}
>>>>> >>>>
>>>>> >>>> I also modified your code for expending data:
>>>>> >>>> dnew<-expand.grid((m1+2):(maxN-(n1+2)),(n1+2):(maxN-m),0:m1,0:n1,
>>>>> >>>> x1:(x1+m-m1),y1:(y1+n-n1))
>>>>> >>>> names(dnew)<-c("m","n","x1","y1","x","y")
>>>>> >>>> dnew
>>>>> >>>> resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),])    # this
>>>>> is
>>>>> >>>> not correct, how to modify it.
>>>>> >>>> resF
>>>>> >>>> row.names(resF)<-1:nrow(resF)
>>>>> >>>> resF
>>>>> >>>>
>>>>> >>>>
>>>>> >>>>
>>>>> >>>>
>>>>> >>>> On Tue, Feb 5, 2013 at 2:46 PM, arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=2>>
>>>>> >>>
>>>>> >>>> wrote:
>>>>> >>>>
>>>>> >>>> Hi,
>>>>> >>>>
>>>>> >>>> >
>>>>> >>>> >You can reduce the steps to reach d2:
>>>>> >>>> >res3<-
>>>>> >>>> with(res2,aggregate(cbind(cterm1_P1L,cterm1_P0H),by=list(m1,n1),max))
>>>>> >>>> >
>>>>> >>>> >#Change it to:
>>>>> >>>> >res3new<-  aggregate(.~m1+n1,data=res2[,c(1:2,12:13)],max)
>>>>> >>>> >res3new
>>>>> >>>> > m1 n1 cterm1_P1L cterm1_P0H
>>>>> >>>> >1  2  2    0.01440 0.00273750
>>>>> >>>> >2  3  2    0.00032 0.00250000
>>>>> >>>> >3  2  3    0.01952 0.00048125
>>>>> >>>> >d2<-res3new[res3new[,3]<0.01 & res3new[,4]<0.01,]
>>>>> >>>> >
>>>>> >>>> > dnew<-expand.grid(4:10,5:10)
>>>>> >>>> > names(dnew)<-c("n","m")
>>>>> >>>> >resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),])
>>>>> >>>> >
>>>>> >>>> >row.names(resF)<-1:nrow(resF)
>>>>> >>>> > head(resF)
>>>>> >>>> >#  m n m1 n1 cterm1_P1L cterm1_P0H
>>>>> >>>> >#1 5 4  3  2    0.00032     0.0025
>>>>> >>>> >#2 5 5  3  2    0.00032     0.0025
>>>>> >>>> >#3 5 6  3  2    0.00032     0.0025
>>>>> >>>> >#4 5 7  3  2    0.00032     0.0025
>>>>> >>>> >#5 5 8  3  2    0.00032     0.0025
>>>>> >>>> >#6 5 9  3  2    0.00032     0.0025
>>>>> >>>> >
>>>>> >>>> >A.K.
>>>>> >>>> >
>>>>> >>>> >________________________________
>>>>> >>>> >From: Joanna Zhang <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=3>>
>>>>> >>>>
>>>>> >>>> >To: arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=4>>
>>>>> >>>
>>>>> >>>>
>>>>> >>>> >Sent: Tuesday, February 5, 2013 2:48 PM
>>>>> >>>> >
>>>>> >>>> >Subject: Re: cumulative sum by group and under some criteria
>>>>> >>>> >
>>>>> >>>> >
>>>>> >>>> >  Hi ,
>>>>> >>>> >what I want is :
>>>>> >>>> >m   n    m1    n1 cterm1_P1L   cterm1_P0H
>>>>> >>>> > 5   4    3       2    0.00032         0.00250000
>>>>> >>>> > 5   5    3       2    0.00032         0.00250000
>>>>> >>>> > 5   6    3       2    0.00032         0.00250000
>>>>> >>>> > 5   7    3       2    0.00032         0.00250000
>>>>> >>>> > 5   8   3       2    0.00032         0.00250000
>>>>> >>>> > 5   9   3       2    0.00032         0.00250000
>>>>> >>>> >5   10  3       2    0.00032         0.00250000
>>>>> >>>> >6    4   3       2    0.00032         0.00250000
>>>>> >>>> >6    5   3       2    0.00032         0.00250000
>>>>> >>>> >6    6   3       2    0.00032         0.00250000
>>>>> >>>> >6    7   3       2    0.00032         0.00250000
>>>>> >>>> >.....
>>>>> >>>> >6    10  3       2    0.00032         0.00250000
>>>>> >>>> >
>>>>> >>>> >
>>>>> >>>> >
>>>>> >>>> >On Tue, Feb 5, 2013 at 1:12 PM, arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=5>>
>>>>> >>>
>>>>> >>>> wrote:
>>>>> >>>> >
>>>>> >>>> >Hi,
>>>>> >>>> >>
>>>>> >>>> >>Saw your message on Nabble.
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>"I want to add some more columns based on the results. Is the
>>>>> following
>>>>> >>>> code good way to create such a data frame and How to see the column m
>>>>> and n
>>>>> >>>> in the updated data?
>>>>> >>>> >>
>>>>> >>>> >>d2<- reres3[res3[,3]<0.01 & res3[,4]<0.01,]
>>>>> >>>> >># should be a typo
>>>>> >>>> >>
>>>>> >>>> >>colnames(d2)[1:2]<- c("m1","n1");
>>>>> >>>> >>d2 #already a data.frame
>>>>> >>>> >>
>>>>> >>>> >>d3<-data.frame(d2)
>>>>> >>>> >>   for (m in (m1+2):10){
>>>>> >>>> >>        for (n in (n1+2):10){
>>>>> >>>> >> d3<-rbind(d3, c(d2))}}" #this is not making much sense to me.
>>>>> >>>>  Especially, you mentioned you wanted add more columns.
>>>>> >>>> >>#Running this step gave error
>>>>> >>>> >>#Error: object 'm1' not found
>>>>> >>>> >>
>>>>> >>>> >>Not sure what you want as output.
>>>>> >>>> >>Could you show the ouput that is expected:
>>>>> >>>> >>
>>>>> >>>> >>A.K.
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>________________________________
>>>>> >>>> >>From: Joanna Zhang <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=6>>
>>>>> >>>>
>>>>> >>>> >>To: arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=7>>
>>>>> >>>
>>>>> >>>>
>>>>> >>>> >>Sent: Tuesday, February 5, 2013 10:23 AM
>>>>> >>>> >>
>>>>> >>>> >>Subject: Re: cumulative sum by group and under some criteria
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>Hi,
>>>>> >>>> >>
>>>>> >>>> >>Yes, I changed code. You answered the questions. But how can I put
>>>>> two
>>>>> >>>> criteria in the code, if both the maximum value of cterm1_p1L <= 0.01
>>>>> and
>>>>> >>>> cterm1_p1H <=0.01, the output the m1,n1.
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>>  >>On Tue, Feb 5, 2013 at 8:47 AM, arun <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=8>>
>>>>> >>>
>>>>> >>>> wrote:
>>>>> >>>> >>
>>>>> >>>> >>
>>>>> >>>> >>>
>>>>> >>>> >>> HI,
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>I am not getting the same results as yours:  You must have changed
>>>>> the
>>>>> >>>> dataset.
>>>>> >>>> >>> res2[,1:2][res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95,]
>>>>> >>>> >>>   m1 n1
>>>>> >>>> >>>1   2  2
>>>>> >>>> >>>2   2  2
>>>>> >>>> >>>3   2  2
>>>>> >>>> >>>4   2  2
>>>>> >>>> >>>5   2  2
>>>>> >>>> >>>6   2  2
>>>>> >>>> >>>7   2  2
>>>>> >>>> >>>8   2  2
>>>>> >>>> >>>9   2  2
>>>>> >>>> >>>10  3  2
>>>>> >>>> >>>11  3  2
>>>>> >>>> >>>12  3  2
>>>>> >>>> >>>13  3  2
>>>>> >>>> >>>14  3  2
>>>>> >>>> >>>15  3  2
>>>>> >>>> >>>16  3  2
>>>>> >>>> >>>17  3  2
>>>>> >>>> >>>18  3  2
>>>>> >>>> >>>19  3  2
>>>>> >>>> >>>20  3  2
>>>>> >>>> >>>21  3  2
>>>>> >>>> >>>22  2  3
>>>>> >>>> >>>23  2  3
>>>>> >>>> >>>24  2  3
>>>>> >>>> >>>25  2  3
>>>>> >>>> >>>26  2  3
>>>>> >>>> >>>27  2  3
>>>>> >>>> >>>28  2  3
>>>>> >>>> >>>29  2  3
>>>>> >>>> >>>30  2  3
>>>>> >>>> >>>31  2  3
>>>>> >>>> >>>32  2  3
>>>>> >>>> >>>33  2  3
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>Regarding the maximum value within each block, haven't I answered
>>>>> in
>>>>> >>>> the earlier post.
>>>>> >>>> >>>
>>>>> >>>> >>>aggregate(cterm1_P1L~m1+n1,data=res2,max)
>>>>> >>>> >>>#  m1 n1 cterm1_P1L
>>>>> >>>> >>>#1  2  2    0.01440
>>>>> >>>> >>>#2  3  2    0.00032
>>>>> >>>> >>>#3  2  3    0.01952
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> with(res2,aggregate(cbind(cterm1_P1L,cterm1_P0H),by=list(m1,n1),max))
>>>>> >>>> >>>#  Group.1 Group.2 cterm1_P1L cterm1_P0H
>>>>> >>>> >>>#1       2       2    0.01440 0.00273750
>>>>> >>>> >>>#2       3       2    0.00032 0.00250000
>>>>> >>>> >>>#3       2       3    0.01952 0.00048125
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>A.K.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>----- Original Message -----
>>>>> >>>
>>>>> >>>> >>>From: "[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=9>";;;;;;;
>>>>> >>>> <[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=10>>
>>>>> >>>> >>>To: [hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=11>
>>>>> >>>>  >>>Cc:
>>>>> >>>> >>>
>>>>> >>>> >>>Sent: Tuesday, February 5, 2013 9:33 AM
>>>>> >>>> >>>Subject: Re: cumulative sum by group and under some criteria
>>>>> >>>> >>>
>>>>> >>>> >>>Hi,
>>>>> >>>> >>>If use this
>>>>> >>>> >>>
>>>>> >>>> >>>res2[,1:2][res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95,]
>>>>> >>>> >>>
>>>>> >>>> >>>the results are the following, but actually only m1=3, n1=2
>>>>> sastify the
>>>>> >>>> criteria, as I need to look at the row with maximum value within each
>>>>> >>>> block,not every row.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>   m1 n1
>>>>> >>>> >>>1   2  2
>>>>> >>>> >>>10  3  2
>>>>> >>>> >>>11  3  2
>>>>> >>>> >>>12  3  2
>>>>> >>>> >>>13  3  2
>>>>> >>>> >>>14  3  2
>>>>> >>>> >>>15  3  2
>>>>> >>>> >>>16  3  2
>>>>> >>>> >>>17  3  2
>>>>> >>>> >>>18  3  2
>>>>> >>>> >>>19  3  2
>>>>> >>>> >>>20  3  2
>>>>> >>>> >>>21  3  2
>>>>> >>>> >>>22  2  3
>>>>> >>>> >>>23  2  3
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>><quote author='arun kirshna'>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>Hi,
>>>>> >>>> >>>Thanks. This extract every row that satisfy the condition, but I
>>>>> need
>>>>> >>>> look
>>>>> >>>> >>>at the last row (the maximum of cumulative sum) for each block
>>>>> (m1,n1).
>>>>> >>>> for
>>>>> >>>> >>>example, if I set the criteria
>>>>> >>>> >>>
>>>>> >>>> >>>res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95, this should extract
>>>>> m1= 3,
>>>>> >>>> n1 =
>>>>> >>>> >>>2.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>Hi,
>>>>> >>>> >>>I am not sure I understand your question.
>>>>> >>>> >>>res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95
>>>>> >>>> >>> #[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
>>>>> TRUE
>>>>> >>>> TRUE
>>>>> >>>> >>>TRUE
>>>>> >>>> >>>#[16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
>>>>> TRUE
>>>>> >>>> TRUE
>>>>> >>>> >>>TRUE
>>>>> >>>> >>>#[31] TRUE TRUE TRUE
>>>>> >>>> >>>
>>>>> >>>> >>>This will extract all the rows.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>res2[,1:2][res2$cterm1_P1L<0.01 & res2$cterm1_P1L!=0,]
>>>>> >>>> >>>#   m1 n1
>>>>> >>>> >>>#21  3  2
>>>>> >>>> >>>This extract only the row you wanted.
>>>>> >>>> >>>
>>>>> >>>> >>>For the different groups:
>>>>> >>>> >>>
>>>>> >>>> >>>aggregate(cterm1_P1L~m1+n1,data=res2,max)
>>>>> >>>> >>>#  m1 n1 cterm1_P1L
>>>>> >>>> >>>#1  2  2    0.01440
>>>>> >>>> >>>#2  3  2    0.00032
>>>>> >>>> >>>#3  2  3    0.01952
>>>>> >>>> >>>
>>>>> >>>> >>> aggregate(cterm1_P1L~m1+n1,data=res2,function(x) max(x)<0.01)
>>>>> >>>> >>> # m1 n1 cterm1_P1L
>>>>> >>>> >>>#1  2  2      FALSE
>>>>> >>>> >>>#2  3  2       TRUE
>>>>> >>>> >>>#3  2  3      FALSE
>>>>> >>>> >>>
>>>>> >>>> >>>res4<-aggregate(cterm1_P1L~m1+n1,data=res2,function(x)
>>>>> max(x)<0.01)
>>>>> >>>> >>>res4[,1:2][res4[,3],]
>>>>> >>>> >>>#  m1 n1
>>>>> >>>> >>>#2  3  2
>>>>> >>>> >>>
>>>>> >>>> >>>A.K.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>----- Original Message -----
>>>>> >>>
>>>>> >>>> >>>From: "[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=12>";;;;;;;
>>>>> >>>> <[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=13>>
>>>>> >>>> >>>To: [hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=14>
>>>>> >>>>  >>>Cc:
>>>>> >>>> >>>Sent: Sunday, February 3, 2013 3:58 PM
>>>>> >>>> >>>Subject: Re: cumulative sum by group and under some criteria
>>>>> >>>> >>>
>>>>> >>>> >>>Hi,
>>>>> >>>> >>>Let me restate my questions. I need to get the m1 and n1 that
>>>>> satisfy
>>>>> >>>> some
>>>>> >>>> >>>criteria, for example in this case, within each group, the maximum
>>>>> >>>> >>>cterm1_p1L ( the last row in this group) <0.01. I need to extract
>>>>> m1=3,
>>>>> >>>> >>>n1=2, I only need m1, n1 in the row.
>>>>> >>>> >>>
>>>>> >>>> >>>Also, how to create the structure from the data.frame, I am new to
>>>>> R, I
>>>>> >>>> need
>>>>> >>>> >>>to change the maxN and run the loop to different data.
>>>>> >>>> >>>Thanks very much for your help!
>>>>> >>>> >>>
>>>>> >>>> >>><quote author='arun kirshna'>
>>>>> >>>> >>>HI,
>>>>> >>>> >>>
>>>>> >>>> >>>I think this should be more correct:
>>>>> >>>> >>>maxN<-9
>>>>> >>>> >>>c11<-0.2
>>>>> >>>> >>>c12<-0.2
>>>>> >>>> >>>p0L<-0.05
>>>>> >>>> >>>p0H<-0.05
>>>>> >>>> >>>p1L<-0.20
>>>>> >>>> >>>p1H<-0.20
>>>>> >>>> >>>
>>>>> >>>> >>>d <- structure(list(m1 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
>>>>> >>>> >>>2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
>>>>> >>>> >>>    n1 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
>>>>> >>>> >>>    3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), x1 = c(0,
>>>>> >>>> >>>    0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2,
>>>>> >>>> >>>    2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3), y1 = c(0, 1, 2, 0,
>>>>> >>>> >>>    1, 2, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1,
>>>>> >>>> >>>    2, 0, 1, 2, 0, 1, 2, 0, 1, 2), Fmm = c(0, 0, 0, 0.7, 0.59,
>>>>> >>>> >>>    0.64, 1, 1, 1, 0, 0, 0, 0, 0.63, 0.7, 0.74, 0.68, 1, 1, 1,
>>>>> >>>> >>>    1, 0, 0, 0, 0.62, 0.63, 0.6, 0.63, 0.6, 0.68, 1, 1, 1), Fnn =
>>>>> c(0,
>>>>> >>>> >>>    0.64, 1, 0, 0.51, 1, 0, 0.67, 1, 0, 0.62, 0.69, 1, 0, 0.54,
>>>>> >>>> >>>    0.62, 1, 0, 0.63, 0.73, 1, 0, 0.63, 1, 0, 0.7, 1, 0, 0.7,
>>>>> >>>> >>>    1, 0, 0.58, 1), Qm = c(1, 1, 1, 0.65, 0.45, 0.36, 0.5, 0.165,
>>>>> >>>> >>>    0, 1, 1, 1, 1, 0.685, 0.38, 0.32, 0.32, 0.5, 0.185, 0.135,
>>>>> >>>> >>>    0, 1, 1, 1, 0.69, 0.37, 0.4, 0.685, 0.4, 0.32, 0.5, 0.21,
>>>>> >>>> >>>    0), Qn = c(1, 0.36, 0, 0.65, 0.45, 0, 0.5, 0.165, 0, 1, 0.38,
>>>>> >>>> >>>    0.31, 0, 0.685, 0.38, 0.32, 0, 0.5, 0.185, 0.135, 0, 1, 0.37,
>>>>> >>>> >>>    0, 0.69, 0.3, 0, 0.685, 0.3, 0, 0.5, 0.21, 0), term1_p0 =
>>>>> >>>> c(0.81450625,
>>>>> >>>> >>>    0.0857375, 0.00225625, 0.0857375, 0.009025, 0.0002375,
>>>>> 0.00225625,
>>>>> >>>> >>>    0.0002375, 6.25e-06, 0.7737809375, 0.1221759375,
>>>>> >>>> 0.00643031249999999,
>>>>> >>>> >>>    0.0001128125, 0.081450625, 0.012860625, 0.000676875,
>>>>> 1.1875e-05,
>>>>> >>>> >>>    0.0021434375, 0.0003384375, 1.78125e-05, 3.125e-07,
>>>>> 0.7737809375,
>>>>> >>>> >>>    0.081450625, 0.0021434375, 0.1221759375, 0.012860625,
>>>>> >>>> 0.0003384375,
>>>>> >>>> >>>    0.00643031249999999, 0.000676875, 1.78125e-05, 0.0001128125,
>>>>> >>>> >>>    1.1875e-05, 3.125e-07), term1_p1 = c(0.4096, 0.2048, 0.0256,
>>>>> >>>> >>>    0.2048, 0.1024, 0.0128, 0.0256, 0.0128, 0.0016, 0.32768,
>>>>> >>>> >>>    0.24576, 0.06144, 0.00512, 0.16384, 0.12288, 0.03072, 0.00256,
>>>>> >>>> >>>    0.02048, 0.01536, 0.00384, 0.00032, 0.32768, 0.16384, 0.02048,
>>>>> >>>> >>>    0.24576, 0.12288, 0.01536, 0.06144, 0.03072, 0.00384, 0.00512,
>>>>> >>>> >>>    0.00256, 0.00032)), .Names = c("m1", "n1", "x1", "y1", "Fmm",
>>>>> >>>> >>>"Fnn", "Qm", "Qn", "term1_p0", "term1_p1"), row.names = c(NA,
>>>>> >>>> >>>33L), class = "data.frame")
>>>>> >>>> >>>
>>>>> >>>> >>>library(zoo)
>>>>> >>>> >>>lst1<- split(d,list(d$m1,d$n1))
>>>>> >>>> >>>res2<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){
>>>>> >>>> >>>x[,11:14]<-NA;
>>>>> >>>> >>>x[,11:12][x$Qm<=c11,]<-cumsum(x[,9:10][x$Qm<=c11,]);
>>>>> >>>> >>>x[,13:14][x$Qn<=c12,]<-cumsum(x[,9:10][x$Qn<=c12,]);
>>>>> >>>> >>>colnames(x)[11:14]<-
>>>>> >>>> c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H");
>>>>> >>>> >>>x1<-na.locf(x);
>>>>> >>>> >>>x1[,11:14][is.na(x1[,11:14])]<-0;
>>>>> >>>> >>>x1}))
>>>>> >>>> >>>row.names(res2)<- 1:nrow(res2)
>>>>> >>>> >>>
>>>>> >>>> >>> res2
>>>>> >>>> >>> #  m1 n1 x1 y1  Fmm  Fnn    Qm    Qn     term1_p0 term1_p1
>>>>> >>>> cterm1_P0L
>>>>> >>>> >>>cterm1_P1L   cterm1_P0H cterm1_P1H
>>>>> >>>> >>>
>>>>> >>>> >>>#1   2  2  0  0 0.00 0.00 1.000 1.000 0.8145062500  0.40960
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#2   2  2  0  1 0.00 0.64 1.000 0.360 0.0857375000  0.20480
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#3   2  2  0  2 0.00 1.00 1.000 0.000 0.0022562500  0.02560
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0022562500    0.02560
>>>>> >>>> >>>#4   2  2  1  0 0.70 0.00 0.650 0.650 0.0857375000  0.20480
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0022562500    0.02560
>>>>> >>>> >>>#5   2  2  1  1 0.59 0.51 0.450 0.450 0.0090250000  0.10240
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0022562500    0.02560
>>>>> >>>> >>>#6   2  2  1  2 0.64 1.00 0.360 0.000 0.0002375000  0.01280
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024937500    0.03840
>>>>> >>>> >>>#7   2  2  2  0 1.00 0.00 0.500 0.500 0.0022562500  0.02560
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024937500    0.03840
>>>>> >>>> >>>#8   2  2  2  1 1.00 0.67 0.165 0.165 0.0002375000  0.01280
>>>>> >>>> 0.0002375000
>>>>> >>>> >>> 0.01280 0.0027312500    0.05120
>>>>> >>>> >>>#9   2  2  2  2 1.00 1.00 0.000 0.000 0.0000062500  0.00160
>>>>> >>>> 0.0002437500
>>>>> >>>> >>> 0.01440 0.0027375000    0.05280
>>>>> >>>> >>>#10  3  2  0  0 0.00 0.00 1.000 1.000 0.7737809375  0.32768
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#11  3  2  0  1 0.00 0.63 1.000 0.370 0.0814506250  0.16384
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#12  3  2  0  2 0.00 1.00 1.000 0.000 0.0021434375  0.02048
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0021434375    0.02048
>>>>> >>>> >>>#13  3  2  1  0 0.62 0.00 0.690 0.690 0.1221759375  0.24576
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0021434375    0.02048
>>>>> >>>> >>>#14  3  2  1  1 0.63 0.70 0.370 0.300 0.0128606250  0.12288
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0021434375    0.02048
>>>>> >>>> >>>#15  3  2  1  2 0.60 1.00 0.400 0.000 0.0003384375  0.01536
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024818750    0.03584
>>>>> >>>> >>>#16  3  2  2  0 0.63 0.00 0.685 0.685 0.0064303125  0.06144
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024818750    0.03584
>>>>> >>>> >>>#17  3  2  2  1 0.60 0.70 0.400 0.300 0.0006768750  0.03072
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024818750    0.03584
>>>>> >>>> >>>#18  3  2  2  2 0.68 1.00 0.320 0.000 0.0000178125  0.00384
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024996875    0.03968
>>>>> >>>> >>>#19  3  2  3  0 1.00 0.00 0.500 0.500 0.0001128125  0.00512
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024996875    0.03968
>>>>> >>>> >>>#20  3  2  3  1 1.00 0.58 0.210 0.210 0.0000118750  0.00256
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0024996875    0.03968
>>>>> >>>> >>>#21  3  2  3  2 1.00 1.00 0.000 0.000 0.0000003125  0.00032
>>>>> >>>> 0.0000003125
>>>>> >>>> >>> 0.00032 0.0025000000    0.04000
>>>>> >>>> >>>#22  2  3  0  0 0.00 0.00 1.000 1.000 0.7737809375  0.32768
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#23  2  3  0  1 0.00 0.62 1.000 0.380 0.1221759375  0.24576
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#24  2  3  0  2 0.00 0.69 1.000 0.310 0.0064303125  0.06144
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0000000000    0.00000
>>>>> >>>> >>>#25  2  3  0  3 0.00 1.00 1.000 0.000 0.0001128125  0.00512
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001128125    0.00512
>>>>> >>>> >>>#26  2  3  1  0 0.63 0.00 0.685 0.685 0.0814506250  0.16384
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001128125    0.00512
>>>>> >>>> >>>#27  2  3  1  1 0.70 0.54 0.380 0.380 0.0128606250  0.12288
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001128125    0.00512
>>>>> >>>> >>>#28  2  3  1  2 0.74 0.62 0.320 0.320 0.0006768750  0.03072
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001128125    0.00512
>>>>> >>>> >>>#29  2  3  1  3 0.68 1.00 0.320 0.000 0.0000118750  0.00256
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001246875    0.00768
>>>>> >>>> >>>#30  2  3  2  0 1.00 0.00 0.500 0.500 0.0021434375  0.02048
>>>>> >>>> 0.0000000000
>>>>> >>>> >>> 0.00000 0.0001246875    0.00768
>>>>> >>>> >>>#31  2  3  2  1 1.00 0.63 0.185 0.185 0.0003384375  0.01536
>>>>> >>>> 0.0003384375
>>>>> >>>> >>> 0.01536 0.0004631250    0.02304
>>>>> >>>> >>>#32  2  3  2  2 1.00 0.73 0.135 0.135 0.0000178125  0.00384
>>>>> >>>> 0.0003562500
>>>>> >>>> >>> 0.01920 0.0004809375    0.02688
>>>>> >>>> >>>#33  2  3  2  3 1.00 1.00 0.000 0.000 0.0000003125  0.00032
>>>>> >>>> 0.0003565625
>>>>> >>>> >>> 0.01952 0.0004812500    0.02720
>>>>> >>>> >>>
>>>>> >>>> >>>#Sorry, some values in my previous solution didn't look right. I
>>>>> >>>> didn't
>>>>> >>>> >>>A.K.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>----- Original Message -----
>>>>> >>>> >>>From: Zjoanna <[hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=15>>
>>>>> >>>>
>>>>> >>>> >>>To: [hidden email]<
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=16>
>>>>> >>>
>>>>> >>>> >>>Cc:
>>>>> >>>> >>>Sent: Friday, February 1, 2013 12:19 PM
>>>>> >>>> >>>Subject: Re: [R] cumulative sum by group and under some criteria
>>>>> >>>> >>>
>>>>> >>>> >>>Thank you very much for your reply. Your code work well with this
>>>>> >>>> example.
>>>>> >>>> >>>I modified a little to fit my real data, I got an error massage.
>>>>> >>>> >>>
>>>>> >>>> >>>Error in split.default(x = seq_len(nrow(x)), f = f, drop = drop,
>>>>> ...) :
>>>>> >>>> >>>  Group length is 0 but data length > 0
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>On Thu, Jan 31, 2013 at 12:21 PM, arun kirshna [via R] <
>>>>> >>>>  >>>[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=17>>
>>>>> >>>
>>>>> >>>> wrote:
>>>>> >>>> >>>
>>>>> >>>> >>>> Hi,
>>>>> >>>> >>>> Try this:
>>>>> >>>> >>>> colnames(d)<-c("m1","n1","x1","y1","p11","p12")
>>>>> >>>> >>>> library(zoo)
>>>>> >>>> >>>> res1<-
>>>>> >>>> do.call(rbind,lapply(lapply(split(d,list(d$m1,d$n1)),function(x)
>>>>> >>>> >>>> {x$cp11[x$x1>1]<- cumsum(x$p11[x$x1>1]);x$cp12[x$y1>1]<-
>>>>> >>>> >>>> cumsum(x$p12[x$y1>1]);x}),function(x)
>>>>> >>>> >>>> {x$cp11<-na.locf(x$cp11,na.rm=F);x$cp12<-
>>>>> >>>> na.locf(x$cp12,na.rm=F);x}))
>>>>> >>>> >>>> #there would be a warning here as one of the list element is
>>>>> NULL.
>>>>> >>>> The,
>>>>> >>>> >>>> warning is okay
>>>>> >>>> >>>> row.names(res1)<- 1:nrow(res1)
>>>>> >>>> >>>> res1[,7:8][is.na(res1[,7:8])]<- 0
>>>>> >>>> >>>> res1
>>>>> >>>> >>>>  #  m1 n1 x1 y1  p11  p12 cp11 cp12
>>>>> >>>> >>>> #1   2  2  0  0 0.00 0.00 0.00 0.00
>>>>> >>>> >>>> #2   2  2  0  1 0.00 0.50 0.00 0.00
>>>>> >>>> >>>> #3   2  2  0  2 0.00 1.00 0.00 1.00
>>>>> >>>> >>>> #4   2  2  1  0 0.50 0.00 0.00 1.00
>>>>> >>>> >>>> #5   2  2  1  1 0.50 0.50 0.00 1.00
>>>>> >>>> >>>> #6   2  2  1  2 0.50 1.00 0.00 2.00
>>>>> >>>> >>>> #7   2  2  2  0 1.00 0.00 1.00 2.00
>>>>> >>>> >>>> #8   2  2  2  1 1.00 0.50 2.00 2.00
>>>>> >>>> >>>> #9   2  2  2  2 1.00 1.00 3.00 3.00
>>>>> >>>> >>>> #10  3  2  0  0 0.00 0.00 0.00 0.00
>>>>> >>>> >>>> #11  3  2  0  1 0.00 0.50 0.00 0.00
>>>>> >>>> >>>> #12  3  2  0  2 0.00 1.00 0.00 1.00
>>>>> >>>> >>>> #13  3  2  1  0 0.33 0.00 0.00 1.00
>>>>> >>>> >>>> #14  3  2  1  1 0.33 0.50 0.00 1.00
>>>>> >>>> >>>> #15  3  2  1  2 0.33 1.00 0.00 2.00
>>>>> >>>> >>>> #16  3  2  2  0 0.67 0.00 0.67 2.00
>>>>> >>>> >>>> #17  3  2  2  1 0.67 0.50 1.34 2.00
>>>>> >>>> >>>> #18  3  2  2  2 0.67 1.00 2.01 3.00
>>>>> >>>> >>>> #19  3  2  3  0 1.00 0.00 3.01 3.00
>>>>> >>>> >>>> #20  3  2  3  1 1.00 0.50 4.01 3.00
>>>>> >>>> >>>> #21  3  2  3  2 1.00 1.00 5.01 4.00
>>>>> >>>> >>>> #22  2  3  0  0 0.00 0.00 0.00 0.00
>>>>> >>>> >>>> #23  2  3  0  1 0.00 0.33 0.00 0.00
>>>>> >>>> >>>> #24  2  3  0  2 0.00 0.67 0.00 0.67
>>>>> >>>> >>>> #25  2  3  0  3 0.00 1.00 0.00 1.67
>>>>> >>>> >>>> #26  2  3  1  0 0.50 0.00 0.00 1.67
>>>>> >>>> >>>> #27  2  3  1  1 0.50 0.33 0.00 1.67
>>>>> >>>> >>>> #28  2  3  1  2 0.50 0.67 0.00 2.34
>>>>> >>>> >>>> #29  2  3  1  3 0.50 1.00 0.00 3.34
>>>>> >>>> >>>> #30  2  3  2  0 1.00 0.00 1.00 3.34
>>>>> >>>> >>>> #31  2  3  2  1 1.00 0.33 2.00 3.34
>>>>> >>>> >>>> #32  2  3  2  2 1.00 0.67 3.00 4.01
>>>>> >>>> >>>> #33  2  3  2  3 1.00 1.00 4.00 5.01
>>>>> >>>> >>>> A.K.
>>>>> >>>> >>>>
>>>>> >>>> >>>> ------------------------------
>>>>> >>>> >>>>  If you reply to this email, your message will be added to the
>>>>> >>>> discussion
>>>>> >>>> >>>> below:
>>>>> >>>> >>>>
>>>>> >>>> >>>>
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657196.html
>>>>> >>>> >>>> To unsubscribe from cumulative sum by group and under some
>>>>> criteria,
>>>>> >>>> click
>>>>> >>>> >>>> here<
>>>>> >>>>
>>>>> >>>> >>>> .
>>>>> >>>> >>>> NAML<
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>>>>
>>>>> >>>>
>>>>> >>>> >>>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>--
>>>>> >>>> >>>View this message in context:
>>>>> >>>> >>>
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657315.html
>>>>> >>>> >>>Sent from the R help mailing list archive at Nabble.com.
>>>>> >>>> >>>    [[alternative HTML version deleted]]
>>>>> >>>> >>>
>>>>> >>>> >>>______________________________________________
>>>>> >>>> >>>[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=18>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>
>>>>> <http://www.r-project.org/posting-guide.html>
>>>>> >>>
>>>>> >>>> >>>and provide commented, minimal, self-contained, reproducible code.
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>______________________________________________
>>>>> >>>> >>>[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=19>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>
>>>>> <http://www.r-project.org/posting-guide.html>
>>>>> >>>
>>>>> >>>> >>>and provide commented, minimal, self-contained, reproducible code.
>>>>> >>>> >>>
>>>>> >>>> >>></quote>
>>>>> >>>> >>>Quoted from:
>>>>> >>>> >>>
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657360.html
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>>______________________________________________
>>>>> >>>> >>>[hidden email] <
>>>>> http://user/SendEmail.jtp?type=node&node=4657773&i=20>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>
>>>>> <http://www.r-project.org/posting-guide.html>
>>>>> >>>
>>>>> >>>> >>>and provide commented, minimal, self-contained, reproducible code.
>>>>> >>>> >>>
>>>>> >>>> >>></quote>
>>>>> >>>> >>>Quoted from:
>>>>> >>>> >>>
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657582.html
>>>>> >>>> >>>
>>>>> >>>> >>>
>>>>> >>>> >>
>>>>> >>>> >
>>>>> >>>>
>>>>> >>>> ______________________________________________
>>>>> >>>> [hidden email] <http://user/SendEmail.jtp?type=node&node=4657773&i=21>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>
>>>>> <http://www.r-project.org/posting-guide.html>
>>>>> >>>
>>>>> >>>> and provide commented, minimal, self-contained, reproducible code.
>>>>> >>>>
>>>>> >>>>
>>>>> >>>
>>>>> >>>> ------------------------------
>>>>> >>>>   If you reply to this email, your message will be added to the
>>>>> >>>> discussion below:
>>>>> >>>>
>>>>> >>>
>>>>> >>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657773.html
>>>>> >>>> To unsubscribe from cumulative sum by group and under some criteria,
>>>>> click
>>>>> >>>> here<
>>>>>
>>>>> >>>
>>>>> >>>> .
>>>>> >>>> NAML<
>>>>> http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>>>>
>>>>> >>>>
>>>>> >>>
>>>>> >>>
>>>>> >>>
>>>>> >>>
>>>>> >>>--
>>>>> >>>View this message in context:
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4658133.html
>>>>> >>>
>>>>> >>>Sent from the R help mailing list archive at Nabble.com.
>>>>> >>>    [[alternative HTML version deleted]]
>>>>> >>>
>>>>> >>>______________________________________________
>>>>> >>>[hidden email] <http://user/SendEmail.jtp?type=node&node=4659514&i=11>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.
>>>>> >>>
>>>>> >>>
>>>>> >>
>>>>> >
>>>>>
>>>>> ______________________________________________
>>>>> [hidden email] <http://user/SendEmail.jtp?type=node&node=4659514&i=12>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.
>>>>>
>>>>>
>>>>> ------------------------------
>>>>>  If you reply to this email, your message will be added to the discussion
>>>>> below:
>>>>>
>>>>
>>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4659514.html
>>>>>  To unsubscribe from cumulative sum by group and under some criteria, click
>>>>> here<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4657074&code=WmpvYW5uYTIwMTNAZ21haWwuY29tfDQ2NTcwNzR8LTE3NTE1MDA0MzY=>
>>>>
>>>>> .
>>>>> NAML<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>--
>>>>View this message in context: http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4659717.html
>>>>
>>>>Sent from the R help mailing list archive at Nabble.com.
>>>>    [[alternative HTML version deleted]]
>>>>
>>>>______________________________________________
>>>>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