Hi,

maxN<- 9


 res3new<-  aggregate(.~m1+n1,data=res2[,c(1:2,12:13)],max)
 d2<-res3new[res3new[,3]<0.01 & res3new[,4]<0.01,]

 d2
#  m1 n1 cterm1_P1L cterm1_P0H
#2  3  2    0.00032     0.0025

 (d2$m1+2)
#[1] 5
 maxN-(d2$n1+2)

#[1] 5
dnew<-expand.grid((m1+2):(maxN-(n1+2)),(n1+2):(maxN-m),0:m1,0:n1, 
x1:(x1+m-m1),y1:(y1+n-n1)) #  I couldn't find  "m" or "n" 

        A.K.                          

________________________________
From: Joanna Zhang <zjoanna2...@gmail.com>
To: arun <smartpink...@yahoo.com> 
Sent: Wednesday, February 6, 2013 12:48 PM
Subject: Re: cumulative sum by group and under some criteria


I tried to change to 4, but it doesn't show all the columns. 


On Wed, Feb 6, 2013 at 10:11 AM, arun <smartpink...@yahoo.com> wrote:


>Hi,
>
>By just looking at the faulty code:
>
>"
>resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),])    # this is not 
>correct, how to modify it."
>If I am correct, `dnew` should have 4 columns in this case, but dnew[,c(2,1)] 
>is only taking the first and second columns.  Though, I didn't test it (a bit 
>busy now, will test later).
>
>
>A.K.
>
>
>
>________________________________
>From: Joanna Zhang <zjoanna2...@gmail.com>
>To: arun <smartpink...@yahoo.com>
>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 thedata, 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 <smartpink...@yahoo.com> 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 <zjoanna2...@gmail.com>
>>To: arun <smartpink...@yahoo.com>
>>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 <smartpink...@yahoo.com> 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 
>>>theupdated 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 <zjoanna2...@gmail.com>
>>>To: arun <smartpink...@yahoo.com>
>>>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 <smartpink...@yahoo.com> 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: "zjoanna2...@gmail.com" <zjoanna2...@gmail.com>
>>>>To: smartpink...@yahoo.com
>>>>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: "zjoanna2...@gmail.com" <zjoanna2...@gmail.com>
>>>>To: smartpink...@yahoo.com
>>>>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 <zjoanna2...@gmail.com>
>>>>To: r-help@r-project.org
>>>>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] <
>>>>ml-node+s789695n4657196...@n4.nabble.com> 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<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-tp4657074p4657315.html
>>>>Sent from the R help mailing list archive at Nabble.com.
>>>>    [[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.
>>>>
>>>></quote>
>>>>Quoted from:
>>>>http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657360.html
>>>>
>>>>
>>>>______________________________________________
>>>>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.
>>>>
>>>></quote>
>>>>Quoted from:
>>>>http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657582.html
>>>>
>>>>    
>>>  
>>
>
>

______________________________________________
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.

Reply via email to