Hi, You can also use ?rowMins() or ?rowMaxs() from library(matrixStats)
library(plyr) res2<- join(res1,d3,by=c("m1","n1"),type="inner") 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(1000, 0.2+res2$x, 0.8+res2$m-res2$x) Pn2<-rbeta(1000, 0.2+res2$y, 0.8+res2$n-res2$y) Fm2<- ecdf(Pm2) Fn2<- ecdf(Pn2) library(matrixStats) res3<- within(res2,{Fmm2<-Fm2(p1);Fnn2<- Fn2(p2);R2<- (Fmm2+Fnn2)/2;Fmm_f2<-rowMins(cbind(R2,Fmm2));Fnn_f2<-rowMaxs(cbind(R2,Fnn2));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 term2_p1 #1 2 2 0 0 4 4 0 0 0.9025 0.64 0.9025 0.64 0.16777216 #2 2 2 0 0 4 4 0 1 0.9025 0.64 0.9025 0.64 0.08388608 #3 2 2 0 0 4 4 0 2 0.9025 0.64 0.9025 0.64 0.01048576 #4 2 2 0 0 4 4 1 0 0.9025 0.64 0.9025 0.64 0.08388608 #5 2 2 0 0 4 4 1 1 0.9025 0.64 0.9025 0.64 0.04194304 #6 2 2 0 0 4 4 1 2 0.9025 0.64 0.9025 0.64 0.00524288 # term2_p0 p2 p1 Qn2 Qm2 Fnn_f2 Fmm_f2 R2 Fnn2 Fmm2 #1 0.6634204313 0.00 0.00 1.000 1.0 0.000 0.0 0.0000 0.000 0.0 #2 0.0698337296 0.25 0.00 0.593 1.0 0.407 0.0 0.2035 0.407 0.0 #3 0.0018377297 0.50 0.00 0.302 1.0 0.698 0.0 0.3490 0.698 0.0 #4 0.0698337296 0.00 0.25 0.800 0.8 0.200 0.2 0.2000 0.000 0.4 #5 0.0073509189 0.25 0.25 0.593 0.6 0.407 0.4 0.4035 0.407 0.4 # 0.0001934452 0.50 0.25 0.302 0.6 0.698 0.4 0.5490 0.698 0.4 ________________________________ From: Joanna Zhang <zjoanna2...@gmail.com> To: arun <smartpink...@yahoo.com> Sent: Saturday, February 23, 2013 5:35 PM Subject: Re: [R] cumulative sum by group and under some criteria the row wise min or max of R2, Rmm2 , for example, for the first row, suppose R2 = 0.63 and Fmm2 = 0.56, then Fmm_f2 = 0.63. means draw 1000 samples for each row from a beta distribution. On Sat, Feb 23, 2013 at 3:49 PM, arun <smartpink...@yahoo.com> wrote: Hi, > >I have a doubt: >When you say that min(R2,Fmm2) or max(R2,Fnn2), do you mean the corresponding >row wise min or max. for these two columns or the maximum from the entire two >columns. > >Also, why do you need rbeta(1000,...), should it be rbeta(240,..) because if >you use the former the nrow from res2 is around 240 and in the formula, you >are also using x, m , from res2, which makes no sense to me. >Arun > > > > > > > > >________________________________ >From: Joanna Zhang <zjoanna2...@gmail.com> >To: arun <smartpink...@yahoo.com> >Sent: Saturday, February 23, 2013 4:12 PM > >Subject: Re: [R] cumulative sum by group and under some criteria > > >sorry, these are >p0L<-0.05 >p0H<-0.05 >p1L<-0.20 >p1H<-0.20 > > > >On Sat, Feb 23, 2013 at 2:48 PM, arun <smartpink...@yahoo.com> wrote: > >Hi, >> >>If you give only half the information, it will be difficult to solve. >> >> >>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") >> >> >> >>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) >> >> identical(d2,res1) >>#[1] TRUE >> >>library(plyr) >>res2<- join(res1,d3,by=c("m1","n1"),type="inner") >>res2$p1<- x/m >> res2$p2<- y/n >> >> >> >>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) >>#Error in dbinom(x1, m1, p0L, log = FALSE) : object 'p0L' not found >>A.K. >> >> >> >>________________________________ >> >>From: Joanna Zhang <zjoanna2...@gmail.com> >>To: arun <smartpink...@yahoo.com> >>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 <smartpink...@yahoo.com> 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 <zjoanna2...@gmail.com> >>>To: arun <smartpink...@yahoo.com> >>>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 <smartpink...@yahoo.com> 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 <zjoanna2...@gmail.com> >>>>To: arun <smartpink...@yahoo.com> >>>> >>>>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 <zjoanna2...@gmail.com> >>>>>To: r-help@r-project.org >>>>>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] < >>>>>ml-node+s789695n4657773...@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]] >>>>> >>>>>______________________________________________ >>>>>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.