[R] cumulative sum by group and under some criteria

arun smartpink111 at yahoo.com
Wed Feb 27 03:33:50 CET 2013


HI,
#
Pm2<-rbeta(1000, 0.2+1, 0.8+3) #obs4
 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

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