Hi, maxN<- 9
res3new<- aggregate(.~m1+n1,data=res2[,c(1:2,12:13)],max) d2<-res3new[res3new[,3]<0.01 & res3new[,4]<0.01,] d2 # m1 n1 cterm1_P1L cterm1_P0H #2 3 2 0.00032 0.0025 (d2$m1+2) #[1] 5 maxN-(d2$n1+2) #[1] 5 dnew<-expand.grid((m1+2):(maxN-(n1+2)),(n1+2):(maxN-m),0:m1,0:n1, x1:(x1+m-m1),y1:(y1+n-n1)) # I couldn't find "m" or "n" A.K. ________________________________ From: Joanna Zhang <zjoanna2...@gmail.com> To: arun <smartpink...@yahoo.com> Sent: Wednesday, February 6, 2013 12:48 PM Subject: Re: cumulative sum by group and under some criteria I tried to change to 4, but it doesn't show all the columns. On Wed, Feb 6, 2013 at 10:11 AM, arun <smartpink...@yahoo.com> wrote: >Hi, > >By just looking at the faulty code: > >" >resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),]) # this is not >correct, how to modify it." >If I am correct, `dnew` should have 4 columns in this case, but dnew[,c(2,1)] >is only taking the first and second columns. Though, I didn't test it (a bit >busy now, will test later). > > >A.K. > > > >________________________________ >From: Joanna Zhang <zjoanna2...@gmail.com> >To: arun <smartpink...@yahoo.com> >Sent: Wednesday, February 6, 2013 10:29 AM > >Subject: Re: cumulative sum by group and under some criteria > > >Hi, > >Thanks! I need to do some calculations in the expended data, the expended data >would be very large, what is an efficient way, doing calculations while >expending thedata, something similiar with the following, or expending data >using the code in your message and then add calculations in the expended data? > > >d3<-data.frame(d2) > for .......{ > for { > for .... { > for .....{ > p1<- x/m > p2<- y/n > .......... >}} >}} > >I also modified your code for expending data: >dnew<-expand.grid((m1+2):(maxN-(n1+2)),(n1+2):(maxN-m),0:m1,0:n1, >x1:(x1+m-m1),y1:(y1+n-n1)) >names(dnew)<-c("m","n","x1","y1","x","y") >dnew >resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),]) # this is not >correct, how to modify it. >resF >row.names(resF)<-1:nrow(resF) >resF > > > > >On Tue, Feb 5, 2013 at 2:46 PM, arun <smartpink...@yahoo.com> wrote: > >Hi, >> >>You can reduce the steps to reach d2: >>res3<- with(res2,aggregate(cbind(cterm1_P1L,cterm1_P0H),by=list(m1,n1),max)) >> >>#Change it to: >>res3new<- aggregate(.~m1+n1,data=res2[,c(1:2,12:13)],max) >>res3new >> m1 n1 cterm1_P1L cterm1_P0H >>1 2 2 0.01440 0.00273750 >>2 3 2 0.00032 0.00250000 >>3 2 3 0.01952 0.00048125 >>d2<-res3new[res3new[,3]<0.01 & res3new[,4]<0.01,] >> >> dnew<-expand.grid(4:10,5:10) >> names(dnew)<-c("n","m") >>resF<-cbind(dnew[,c(2,1)],d2[rep(1:nrow(d2),nrow(dnew)),]) >> >>row.names(resF)<-1:nrow(resF) >> head(resF) >># m n m1 n1 cterm1_P1L cterm1_P0H >>#1 5 4 3 2 0.00032 0.0025 >>#2 5 5 3 2 0.00032 0.0025 >>#3 5 6 3 2 0.00032 0.0025 >>#4 5 7 3 2 0.00032 0.0025 >>#5 5 8 3 2 0.00032 0.0025 >>#6 5 9 3 2 0.00032 0.0025 >> >>A.K. >> >>________________________________ >>From: Joanna Zhang <zjoanna2...@gmail.com> >>To: arun <smartpink...@yahoo.com> >>Sent: Tuesday, February 5, 2013 2:48 PM >> >>Subject: Re: cumulative sum by group and under some criteria >> >> >> Hi , >>what I want is : >>m n m1 n1 cterm1_P1L cterm1_P0H >> 5 4 3 2 0.00032 0.00250000 >> 5 5 3 2 0.00032 0.00250000 >> 5 6 3 2 0.00032 0.00250000 >> 5 7 3 2 0.00032 0.00250000 >> 5 8 3 2 0.00032 0.00250000 >> 5 9 3 2 0.00032 0.00250000 >>5 10 3 2 0.00032 0.00250000 >>6 4 3 2 0.00032 0.00250000 >>6 5 3 2 0.00032 0.00250000 >>6 6 3 2 0.00032 0.00250000 >>6 7 3 2 0.00032 0.00250000 >>..... >>6 10 3 2 0.00032 0.00250000 >> >> >> >>On Tue, Feb 5, 2013 at 1:12 PM, arun <smartpink...@yahoo.com> wrote: >> >>Hi, >>> >>>Saw your message on Nabble. >>> >>> >>>"I want to add some more columns based on the results. Is the following code >>>good way to create such a data frame and How to see the column m and n in >>>theupdated data? > >>> >>>d2<- reres3[res3[,3]<0.01 & res3[,4]<0.01,] >>># should be a typo >>> >>>colnames(d2)[1:2]<- c("m1","n1"); >>>d2 #already a data.frame >>> >>>d3<-data.frame(d2) >>> for (m in (m1+2):10){ >>> for (n in (n1+2):10){ >>> d3<-rbind(d3, c(d2))}}" #this is not making much sense to me. Especially, >>>you mentioned you wanted add more columns. >>>#Running this step gave error >>>#Error: object 'm1' not found >>> >>>Not sure what you want as output. >>>Could you show the ouput that is expected: >>> >>>A.K. >>> >>> >>> >>> >>> >>> >>> >>> >>>________________________________ >>>From: Joanna Zhang <zjoanna2...@gmail.com> >>>To: arun <smartpink...@yahoo.com> >>>Sent: Tuesday, February 5, 2013 10:23 AM >>> >>>Subject: Re: cumulative sum by group and under some criteria >>> >>> >>>Hi, >>> >>>Yes, I changed code. You answered the questions. But how can I put two >>>criteria in the code, if both the maximum value of cterm1_p1L <= 0.01 and >>>cterm1_p1H<=0.01, the output the m1,n1. >>> >>> >>> >>> >>>On Tue, Feb 5, 2013 at 8:47 AM, arun <smartpink...@yahoo.com> wrote: >>> >>> >>>> >>>> HI, >>>> >>>> >>>>I am not getting the same results as yours: You must have changed the >>>>dataset. >>>> res2[,1:2][res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95,] >>>> m1 n1 >>>>1 2 2 >>>>2 2 2 >>>>3 2 2 >>>>4 2 2 >>>>5 2 2 >>>>6 2 2 >>>>7 2 2 >>>>8 2 2 >>>>9 2 2 >>>>10 3 2 >>>>11 3 2 >>>>12 3 2 >>>>13 3 2 >>>>14 3 2 >>>>15 3 2 >>>>16 3 2 >>>>17 3 2 >>>>18 3 2 >>>>19 3 2 >>>>20 3 2 >>>>21 3 2 >>>>22 2 3 >>>>23 2 3 >>>>24 2 3 >>>>25 2 3 >>>>26 2 3 >>>>27 2 3 >>>>28 2 3 >>>>29 2 3 >>>>30 2 3 >>>>31 2 3 >>>>32 2 3 >>>>33 2 3 >>>> >>>> >>>>Regarding the maximum value within each block, haven't I answered in the >>>>earlier post. >>>> >>>>aggregate(cterm1_P1L~m1+n1,data=res2,max) >>>># m1 n1 cterm1_P1L >>>>#1 2 2 0.01440 >>>>#2 3 2 0.00032 >>>>#3 2 3 0.01952 >>>> >>>> >>>> with(res2,aggregate(cbind(cterm1_P1L,cterm1_P0H),by=list(m1,n1),max)) >>>># Group.1 Group.2 cterm1_P1L cterm1_P0H >>>>#1 2 2 0.01440 0.00273750 >>>>#2 3 2 0.00032 0.00250000 >>>>#3 2 3 0.01952 0.00048125 >>>> >>>> >>>>A.K. >>>> >>>> >>>>----- Original Message ----- >>>>From: "zjoanna2...@gmail.com" <zjoanna2...@gmail.com> >>>>To: smartpink...@yahoo.com >>>>Cc: >>>> >>>>Sent: Tuesday, February 5, 2013 9:33 AM >>>>Subject: Re: cumulative sum by group and under some criteria >>>> >>>>Hi, >>>>If use this >>>> >>>>res2[,1:2][res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95,] >>>> >>>>the results are the following, but actually only m1=3, n1=2 sastify the >>>>criteria, as I need to look at the row with maximum value within each >>>>block,not every row. >>>> >>>> >>>> m1 n1 >>>>1 2 2 >>>>10 3 2 >>>>11 3 2 >>>>12 3 2 >>>>13 3 2 >>>>14 3 2 >>>>15 3 2 >>>>16 3 2 >>>>17 3 2 >>>>18 3 2 >>>>19 3 2 >>>>20 3 2 >>>>21 3 2 >>>>22 2 3 >>>>23 2 3 >>>> >>>> >>>><quote author='arun kirshna'> >>>> >>>> >>>> >>>>Hi, >>>>Thanks. This extract every row that satisfy the condition, but I need look >>>>at the last row (the maximum of cumulative sum) for each block (m1,n1). for >>>>example, if I set the criteria >>>> >>>>res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95, this should extract m1= 3, n1 = >>>>2. >>>> >>>> >>>>Hi, >>>>I am not sure I understand your question. >>>>res2$cterm1_P1L<0.6 & res2$cterm1_P0H<0.95 >>>> #[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE >>>>TRUE >>>>#[16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE >>>>TRUE >>>>#[31] TRUE TRUE TRUE >>>> >>>>This will extract all the rows. >>>> >>>> >>>>res2[,1:2][res2$cterm1_P1L<0.01 & res2$cterm1_P1L!=0,] >>>># m1 n1 >>>>#21 3 2 >>>>This extract only the row you wanted. >>>> >>>>For the different groups: >>>> >>>>aggregate(cterm1_P1L~m1+n1,data=res2,max) >>>># m1 n1 cterm1_P1L >>>>#1 2 2 0.01440 >>>>#2 3 2 0.00032 >>>>#3 2 3 0.01952 >>>> >>>> aggregate(cterm1_P1L~m1+n1,data=res2,function(x) max(x)<0.01) >>>> # m1 n1 cterm1_P1L >>>>#1 2 2 FALSE >>>>#2 3 2 TRUE >>>>#3 2 3 FALSE >>>> >>>>res4<-aggregate(cterm1_P1L~m1+n1,data=res2,function(x) max(x)<0.01) >>>>res4[,1:2][res4[,3],] >>>># m1 n1 >>>>#2 3 2 >>>> >>>>A.K. >>>> >>>> >>>> >>>> >>>>----- Original Message ----- >>>>From: "zjoanna2...@gmail.com" <zjoanna2...@gmail.com> >>>>To: smartpink...@yahoo.com >>>>Cc: >>>>Sent: Sunday, February 3, 2013 3:58 PM >>>>Subject: Re: cumulative sum by group and under some criteria >>>> >>>>Hi, >>>>Let me restate my questions. I need to get the m1 and n1 that satisfy some >>>>criteria, for example in this case, within each group, the maximum >>>>cterm1_p1L ( the last row in this group) <0.01. I need to extract m1=3, >>>>n1=2, I only need m1, n1 in the row. >>>> >>>>Also, how to create the structure from the data.frame, I am new to R, I need >>>>to change the maxN and run the loop to different data. >>>>Thanks very much for your help! >>>> >>>><quote author='arun kirshna'> >>>>HI, >>>> >>>>I think this should be more correct: >>>>maxN<-9 >>>>c11<-0.2 >>>>c12<-0.2 >>>>p0L<-0.05 >>>>p0H<-0.05 >>>>p1L<-0.20 >>>>p1H<-0.20 >>>> >>>>d <- structure(list(m1 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >>>>2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), >>>> n1 = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, >>>> 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), x1 = c(0, >>>> 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, >>>> 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3), y1 = c(0, 1, 2, 0, >>>> 1, 2, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, >>>> 2, 0, 1, 2, 0, 1, 2, 0, 1, 2), Fmm = c(0, 0, 0, 0.7, 0.59, >>>> 0.64, 1, 1, 1, 0, 0, 0, 0, 0.63, 0.7, 0.74, 0.68, 1, 1, 1, >>>> 1, 0, 0, 0, 0.62, 0.63, 0.6, 0.63, 0.6, 0.68, 1, 1, 1), Fnn = c(0, >>>> 0.64, 1, 0, 0.51, 1, 0, 0.67, 1, 0, 0.62, 0.69, 1, 0, 0.54, >>>> 0.62, 1, 0, 0.63, 0.73, 1, 0, 0.63, 1, 0, 0.7, 1, 0, 0.7, >>>> 1, 0, 0.58, 1), Qm = c(1, 1, 1, 0.65, 0.45, 0.36, 0.5, 0.165, >>>> 0, 1, 1, 1, 1, 0.685, 0.38, 0.32, 0.32, 0.5, 0.185, 0.135, >>>> 0, 1, 1, 1, 0.69, 0.37, 0.4, 0.685, 0.4, 0.32, 0.5, 0.21, >>>> 0), Qn = c(1, 0.36, 0, 0.65, 0.45, 0, 0.5, 0.165, 0, 1, 0.38, >>>> 0.31, 0, 0.685, 0.38, 0.32, 0, 0.5, 0.185, 0.135, 0, 1, 0.37, >>>> 0, 0.69, 0.3, 0, 0.685, 0.3, 0, 0.5, 0.21, 0), term1_p0 = c(0.81450625, >>>> 0.0857375, 0.00225625, 0.0857375, 0.009025, 0.0002375, 0.00225625, >>>> 0.0002375, 6.25e-06, 0.7737809375, 0.1221759375, 0.00643031249999999, >>>> 0.0001128125, 0.081450625, 0.012860625, 0.000676875, 1.1875e-05, >>>> 0.0021434375, 0.0003384375, 1.78125e-05, 3.125e-07, 0.7737809375, >>>> 0.081450625, 0.0021434375, 0.1221759375, 0.012860625, 0.0003384375, >>>> 0.00643031249999999, 0.000676875, 1.78125e-05, 0.0001128125, >>>> 1.1875e-05, 3.125e-07), term1_p1 = c(0.4096, 0.2048, 0.0256, >>>> 0.2048, 0.1024, 0.0128, 0.0256, 0.0128, 0.0016, 0.32768, >>>> 0.24576, 0.06144, 0.00512, 0.16384, 0.12288, 0.03072, 0.00256, >>>> 0.02048, 0.01536, 0.00384, 0.00032, 0.32768, 0.16384, 0.02048, >>>> 0.24576, 0.12288, 0.01536, 0.06144, 0.03072, 0.00384, 0.00512, >>>> 0.00256, 0.00032)), .Names = c("m1", "n1", "x1", "y1", "Fmm", >>>>"Fnn", "Qm", "Qn", "term1_p0", "term1_p1"), row.names = c(NA, >>>>33L), class = "data.frame") >>>> >>>>library(zoo) >>>>lst1<- split(d,list(d$m1,d$n1)) >>>>res2<-do.call(rbind,lapply(lst1[lapply(lst1,nrow)!=0],function(x){ >>>>x[,11:14]<-NA; >>>>x[,11:12][x$Qm<=c11,]<-cumsum(x[,9:10][x$Qm<=c11,]); >>>>x[,13:14][x$Qn<=c12,]<-cumsum(x[,9:10][x$Qn<=c12,]); >>>>colnames(x)[11:14]<- c("cterm1_P0L","cterm1_P1L","cterm1_P0H","cterm1_P1H"); >>>>x1<-na.locf(x); >>>>x1[,11:14][is.na(x1[,11:14])]<-0; >>>>x1})) >>>>row.names(res2)<- 1:nrow(res2) >>>> >>>> res2 >>>> # m1 n1 x1 y1 Fmm Fnn Qm Qn term1_p0 term1_p1 cterm1_P0L >>>>cterm1_P1L cterm1_P0H cterm1_P1H >>>> >>>>#1 2 2 0 0 0.00 0.00 1.000 1.000 0.8145062500 0.40960 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#2 2 2 0 1 0.00 0.64 1.000 0.360 0.0857375000 0.20480 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#3 2 2 0 2 0.00 1.00 1.000 0.000 0.0022562500 0.02560 0.0000000000 >>>> 0.00000 0.0022562500 0.02560 >>>>#4 2 2 1 0 0.70 0.00 0.650 0.650 0.0857375000 0.20480 0.0000000000 >>>> 0.00000 0.0022562500 0.02560 >>>>#5 2 2 1 1 0.59 0.51 0.450 0.450 0.0090250000 0.10240 0.0000000000 >>>> 0.00000 0.0022562500 0.02560 >>>>#6 2 2 1 2 0.64 1.00 0.360 0.000 0.0002375000 0.01280 0.0000000000 >>>> 0.00000 0.0024937500 0.03840 >>>>#7 2 2 2 0 1.00 0.00 0.500 0.500 0.0022562500 0.02560 0.0000000000 >>>> 0.00000 0.0024937500 0.03840 >>>>#8 2 2 2 1 1.00 0.67 0.165 0.165 0.0002375000 0.01280 0.0002375000 >>>> 0.01280 0.0027312500 0.05120 >>>>#9 2 2 2 2 1.00 1.00 0.000 0.000 0.0000062500 0.00160 0.0002437500 >>>> 0.01440 0.0027375000 0.05280 >>>>#10 3 2 0 0 0.00 0.00 1.000 1.000 0.7737809375 0.32768 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#11 3 2 0 1 0.00 0.63 1.000 0.370 0.0814506250 0.16384 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#12 3 2 0 2 0.00 1.00 1.000 0.000 0.0021434375 0.02048 0.0000000000 >>>> 0.00000 0.0021434375 0.02048 >>>>#13 3 2 1 0 0.62 0.00 0.690 0.690 0.1221759375 0.24576 0.0000000000 >>>> 0.00000 0.0021434375 0.02048 >>>>#14 3 2 1 1 0.63 0.70 0.370 0.300 0.0128606250 0.12288 0.0000000000 >>>> 0.00000 0.0021434375 0.02048 >>>>#15 3 2 1 2 0.60 1.00 0.400 0.000 0.0003384375 0.01536 0.0000000000 >>>> 0.00000 0.0024818750 0.03584 >>>>#16 3 2 2 0 0.63 0.00 0.685 0.685 0.0064303125 0.06144 0.0000000000 >>>> 0.00000 0.0024818750 0.03584 >>>>#17 3 2 2 1 0.60 0.70 0.400 0.300 0.0006768750 0.03072 0.0000000000 >>>> 0.00000 0.0024818750 0.03584 >>>>#18 3 2 2 2 0.68 1.00 0.320 0.000 0.0000178125 0.00384 0.0000000000 >>>> 0.00000 0.0024996875 0.03968 >>>>#19 3 2 3 0 1.00 0.00 0.500 0.500 0.0001128125 0.00512 0.0000000000 >>>> 0.00000 0.0024996875 0.03968 >>>>#20 3 2 3 1 1.00 0.58 0.210 0.210 0.0000118750 0.00256 0.0000000000 >>>> 0.00000 0.0024996875 0.03968 >>>>#21 3 2 3 2 1.00 1.00 0.000 0.000 0.0000003125 0.00032 0.0000003125 >>>> 0.00032 0.0025000000 0.04000 >>>>#22 2 3 0 0 0.00 0.00 1.000 1.000 0.7737809375 0.32768 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#23 2 3 0 1 0.00 0.62 1.000 0.380 0.1221759375 0.24576 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#24 2 3 0 2 0.00 0.69 1.000 0.310 0.0064303125 0.06144 0.0000000000 >>>> 0.00000 0.0000000000 0.00000 >>>>#25 2 3 0 3 0.00 1.00 1.000 0.000 0.0001128125 0.00512 0.0000000000 >>>> 0.00000 0.0001128125 0.00512 >>>>#26 2 3 1 0 0.63 0.00 0.685 0.685 0.0814506250 0.16384 0.0000000000 >>>> 0.00000 0.0001128125 0.00512 >>>>#27 2 3 1 1 0.70 0.54 0.380 0.380 0.0128606250 0.12288 0.0000000000 >>>> 0.00000 0.0001128125 0.00512 >>>>#28 2 3 1 2 0.74 0.62 0.320 0.320 0.0006768750 0.03072 0.0000000000 >>>> 0.00000 0.0001128125 0.00512 >>>>#29 2 3 1 3 0.68 1.00 0.320 0.000 0.0000118750 0.00256 0.0000000000 >>>> 0.00000 0.0001246875 0.00768 >>>>#30 2 3 2 0 1.00 0.00 0.500 0.500 0.0021434375 0.02048 0.0000000000 >>>> 0.00000 0.0001246875 0.00768 >>>>#31 2 3 2 1 1.00 0.63 0.185 0.185 0.0003384375 0.01536 0.0003384375 >>>> 0.01536 0.0004631250 0.02304 >>>>#32 2 3 2 2 1.00 0.73 0.135 0.135 0.0000178125 0.00384 0.0003562500 >>>> 0.01920 0.0004809375 0.02688 >>>>#33 2 3 2 3 1.00 1.00 0.000 0.000 0.0000003125 0.00032 0.0003565625 >>>> 0.01952 0.0004812500 0.02720 >>>> >>>>#Sorry, some values in my previous solution didn't look right. I didn't >>>>A.K. >>>> >>>> >>>> >>>> >>>> >>>>----- Original Message ----- >>>>From: Zjoanna <zjoanna2...@gmail.com> >>>>To: r-help@r-project.org >>>>Cc: >>>>Sent: Friday, February 1, 2013 12:19 PM >>>>Subject: Re: [R] cumulative sum by group and under some criteria >>>> >>>>Thank you very much for your reply. Your code work well with this example. >>>>I modified a little to fit my real data, I got an error massage. >>>> >>>>Error in split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...) : >>>> Group length is 0 but data length > 0 >>>> >>>> >>>>On Thu, Jan 31, 2013 at 12:21 PM, arun kirshna [via R] < >>>>ml-node+s789695n4657196...@n4.nabble.com> wrote: >>>> >>>>> Hi, >>>>> Try this: >>>>> colnames(d)<-c("m1","n1","x1","y1","p11","p12") >>>>> library(zoo) >>>>> res1<- do.call(rbind,lapply(lapply(split(d,list(d$m1,d$n1)),function(x) >>>>> {x$cp11[x$x1>1]<- cumsum(x$p11[x$x1>1]);x$cp12[x$y1>1]<- >>>>> cumsum(x$p12[x$y1>1]);x}),function(x) >>>>> {x$cp11<-na.locf(x$cp11,na.rm=F);x$cp12<- na.locf(x$cp12,na.rm=F);x})) >>>>> #there would be a warning here as one of the list element is NULL. The, >>>>> warning is okay >>>>> row.names(res1)<- 1:nrow(res1) >>>>> res1[,7:8][is.na(res1[,7:8])]<- 0 >>>>> res1 >>>>> # m1 n1 x1 y1 p11 p12 cp11 cp12 >>>>> #1 2 2 0 0 0.00 0.00 0.00 0.00 >>>>> #2 2 2 0 1 0.00 0.50 0.00 0.00 >>>>> #3 2 2 0 2 0.00 1.00 0.00 1.00 >>>>> #4 2 2 1 0 0.50 0.00 0.00 1.00 >>>>> #5 2 2 1 1 0.50 0.50 0.00 1.00 >>>>> #6 2 2 1 2 0.50 1.00 0.00 2.00 >>>>> #7 2 2 2 0 1.00 0.00 1.00 2.00 >>>>> #8 2 2 2 1 1.00 0.50 2.00 2.00 >>>>> #9 2 2 2 2 1.00 1.00 3.00 3.00 >>>>> #10 3 2 0 0 0.00 0.00 0.00 0.00 >>>>> #11 3 2 0 1 0.00 0.50 0.00 0.00 >>>>> #12 3 2 0 2 0.00 1.00 0.00 1.00 >>>>> #13 3 2 1 0 0.33 0.00 0.00 1.00 >>>>> #14 3 2 1 1 0.33 0.50 0.00 1.00 >>>>> #15 3 2 1 2 0.33 1.00 0.00 2.00 >>>>> #16 3 2 2 0 0.67 0.00 0.67 2.00 >>>>> #17 3 2 2 1 0.67 0.50 1.34 2.00 >>>>> #18 3 2 2 2 0.67 1.00 2.01 3.00 >>>>> #19 3 2 3 0 1.00 0.00 3.01 3.00 >>>>> #20 3 2 3 1 1.00 0.50 4.01 3.00 >>>>> #21 3 2 3 2 1.00 1.00 5.01 4.00 >>>>> #22 2 3 0 0 0.00 0.00 0.00 0.00 >>>>> #23 2 3 0 1 0.00 0.33 0.00 0.00 >>>>> #24 2 3 0 2 0.00 0.67 0.00 0.67 >>>>> #25 2 3 0 3 0.00 1.00 0.00 1.67 >>>>> #26 2 3 1 0 0.50 0.00 0.00 1.67 >>>>> #27 2 3 1 1 0.50 0.33 0.00 1.67 >>>>> #28 2 3 1 2 0.50 0.67 0.00 2.34 >>>>> #29 2 3 1 3 0.50 1.00 0.00 3.34 >>>>> #30 2 3 2 0 1.00 0.00 1.00 3.34 >>>>> #31 2 3 2 1 1.00 0.33 2.00 3.34 >>>>> #32 2 3 2 2 1.00 0.67 3.00 4.01 >>>>> #33 2 3 2 3 1.00 1.00 4.00 5.01 >>>>> A.K. >>>>> >>>>> ------------------------------ >>>>> If you reply to this email, your message will be added to the discussion >>>>> below: >>>>> >>>>> http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657196.html >>>>> To unsubscribe from cumulative sum by group and under some criteria, click >>>>> here<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4657074&code=WmpvYW5uYTIwMTNAZ21haWwuY29tfDQ2NTcwNzR8LTE3NTE1MDA0MzY=> >>>>> . >>>>> NAML<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> >>>>> >>>> >>>> >>>> >>>> >>>>-- >>>>View this message in context: >>>>http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657315.html >>>>Sent from the R help mailing list archive at Nabble.com. >>>> [[alternative HTML version deleted]] >>>> >>>>______________________________________________ >>>>R-help@r-project.org mailing list >>>>https://stat.ethz.ch/mailman/listinfo/r-help >>>>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >>>>and provide commented, minimal, self-contained, reproducible code. >>>> >>>> >>>>______________________________________________ >>>>R-help@r-project.org mailing list >>>>https://stat.ethz.ch/mailman/listinfo/r-help >>>>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >>>>and provide commented, minimal, self-contained, reproducible code. >>>> >>>></quote> >>>>Quoted from: >>>>http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657360.html >>>> >>>> >>>>______________________________________________ >>>>R-help@r-project.org mailing list >>>>https://stat.ethz.ch/mailman/listinfo/r-help >>>>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >>>>and provide commented, minimal, self-contained, reproducible code. >>>> >>>></quote> >>>>Quoted from: >>>>http://r.789695.n4.nabble.com/cumulative-sum-by-group-and-under-some-criteria-tp4657074p4657582.html >>>> >>>> >>> >> > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.