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] <
ml-node+s789695n4657773h74@n4.nabble.com> 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>
> >>>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>
> >>>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>
> >>>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>
> 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<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-tp4657074p4658133.html
Sent from the R help mailing list archive at Nabble.com.
	[[alternative HTML version deleted]]

