Hi, Your question is still not clear. May be this helps: dat2<- read.table(text=" patient_id????? t???????? scores 1????????????????????? 0??????????????? 1.6 1????????????????????? 1??????????????? 2.6 1????????????????????? 2???????????????? 2.2 1????????????????????? 3???????????????? 1.8 2????????????????????? 0????????????????? 2.3 2?????????????????????? 2???????????????? 2.5 2????????????????????? 4????????????????? 2.6 2?????????????????????? 5???????????????? 1.5 ",sep="",header=TRUE) library(plyr) ?dat2New<-ddply(dat2,.(patient_id),summarize,t=seq(min(t),max(t))) ?res<-join(dat2New,dat2,type="full") res1<-do.call(rbind,lapply(split(res,res$patient_id),function(x) {x1<-x[x$t!=0,];do.call(rbind,lapply(split(x1,((x1$t-1)%/%3)+1),function(y) {y1<-if(any(y$t==1)) rbind(x[x$t==0,],y) else y; data.frame(patient_id=unique(y1$patient_id),scores=mean(y1$scores,na.rm=TRUE))}) ) })) ?row.names(res1)<-1:nrow(res1) res1$period<-with(res1,ave(patient_id,patient_id,FUN=seq)) ?res1 #? patient_id scores period #1????????? 1?? 2.05????? 1 #2????????? 2?? 2.40????? 1 #3????????? 2?? 2.05????? 2 A.K. ________________________________ From: GUANGUAN LUO <guanguanluo at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Tuesday, May 7, 2013 11:29 AM Subject: Re: how to calculate the mean in a period of time? Yes ? as you have said, probably , it's not continuous. 2013/5/7 arun <smartpink111 at yahoo.com> Hi,>Your question is not clear.? You mentioned to calculate the mean of 3 months, but infact you added the scores for t=0,1,2,3 as first 3 months, then possibly 4,5,6 as the next.? So, it is not exactly three months.? Isn't it? > > >Dear R experts, >sorry to trouble you again. >My data is like this now : >patient_id ? ? ?t ? ? ? ? scores >1 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ?1.6 >1 ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?2.6 >1 ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? ? 2.2 >1 ? ? ? ? ? ? ? ? ? ? ?3 ? ? ? ? ? ? ? ? 1.8 >2 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?2.3 >2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? 2.5 >2 ? ? ? ? ? ? ? ? ? ? ?4 ? ? ? ? ? ? ? ? ?2.6 >2 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? 1.5 > >I want to calculate the mean of period of 3 months, just get a table like this > >patient_id ? ? period ? ? scores >1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ? ?(1.6+2.6+2.2+1.8)/4 >2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? 2.4 ? ? ? ? ? ? ? ? ? ? (2.3+2.5)/2 >2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ?(2.6+1.5)/2 > >thank you in avance >
Hi, The output you showed is not clear especially the for the scores3, ? 2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 In the input data, the scores3 column didn't had 0.8. This is what I got: dat1<- read.table(text=" patient_id????? number????? responsed_at????? delais????? scores1?? scores2?? scores3 ?1????????????????????? 1??????????? 2010-05-26???????? NA?????????? 2.6?????? 0.5??????????? 0.7?? ?1????????????????????? 2???????????? 2010-07-07???????? 42??????????? 2.5?????? NA?????????? NA??????? ?1?????????????????????? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA?????????? NA?? ?1?????????????????????? 4??????????? 2010-10-01????????? 48??????????? 2.5?????? 0.7?????????? 0.6 ?1?????????????????????? 5??????????? 2010-12-01????????? 61??????????? 2.5?????? NA?????????? NA 2??????????????????????? 1??????????? 2011-07-19????????? NA?????????? 2.5?????? 0.8??????????? 0.5 2???????????????????????? 2?????????? 2011-09-22????????? 65??????????? 2.6?????? NA??????????? NA 2??????????????????????? 3???????????? 2011-10-26????????? 34??????????? 2.7????? NA??????????? NA 3??????????????????????? 1???????????? 2011-07-17???????? NA?????????? 2.8????? 0.5???????????? 0.6 3??????????????????????? 2??????????? 2011-10-30????????? 103?????????? 2.6????? NA???????????? NA 3???????????????????????? 3????????????? 2011-12-23??????? 54??????????? 2.5????? NA???????????? NA ",sep="",header=TRUE,stringsAsFactors=FALSE) ?dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & delais>20, 1,ifelse(delais<60 & delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) library(zoo) res<-do.call(rbind,lapply(split(dat1,dat1$patient_id),function(x) {x$idx[as.logical(cumsum(is.na(x$idx)))]<-NA; x1<-x[!is.na(x$idx),]; x1[,6:8]<-na.locf(x1[,6:8]);x2<-x1[rep(seq_len(nrow(x1)),x1$idx),]; x2$delais[duplicated(x2$delais,fromLast=TRUE)]<-0; x2$t<-seq(0,nrow(x2)-1,1);x2})) row.names(res)<- 1:nrow(res) ?res1<- res[,c(1:3,9,4:7)] res1 #?? patient_id number responsed_at t delais scores1 scores2 scores3 #1?????????? 1????? 1?? 2010-05-26 0???? NA???? 2.6???? 0.5???? 0.7 #2?????????? 1????? 2?? 2010-07-07 1???? 42???? 2.5???? 0.5???? 0.7 #3?????????? 1????? 3?? 2010-08-14 2???? 38???? 2.3???? 0.5???? 0.7 #4?????????? 1????? 4?? 2010-10-01 3????? 0???? 2.5???? 0.7???? 0.6 #5?????????? 1????? 4?? 2010-10-01 4???? 48???? 2.5???? 0.7???? 0.6 #6?????????? 1????? 5?? 2010-12-01 5????? 0???? 2.5???? 0.7???? 0.6 #7?????????? 1????? 5?? 2010-12-01 6????? 0???? 2.5???? 0.7???? 0.6 #8?????????? 1????? 5?? 2010-12-01 7???? 61???? 2.5???? 0.7???? 0.6 #9?????????? 2????? 1?? 2011-07-19 0???? NA???? 2.5???? 0.8???? 0.5 #10????????? 2????? 2?? 2011-09-22 1????? 0???? 2.6???? 0.8???? 0.5 #11????????? 2????? 2?? 2011-09-22 2????? 0???? 2.6???? 0.8???? 0.5 #12????????? 2????? 2?? 2011-09-22 3???? 65???? 2.6???? 0.8???? 0.5 #13????????? 2????? 3?? 2011-10-26 4???? 34???? 2.7???? 0.8???? 0.5 #14????????? 3????? 1?? 2011-07-17 0???? NA???? 2.8???? 0.5???? 0.6 A.K. ________________________________ From: GUANGUAN LUO <guanguanluo at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Thursday, May 16, 2013 12:05 PM Subject: Re: how to calculate the mean in a period of time? Hello, AK, now i have a problem really complicated for me, Now my table is like this: patient_id????? number????? responsed_at????? delais????? scores1 ? scores2 ? scores3 ?1????????????????????? 1??????????? 2010-05-26 ??????? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? ?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ? ? ? ? 42 ? ? ? ? ?? 2.5 ????? NA ? ? ? ? ? NA? ? ? ?? ?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA????? ? ?? NA ?? ?1?????????????????????? 4??????????? 2010-10-01 ? ? ? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 ?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ? ? ? ?? 61 ? ? ? ? ?? 2.5 ? ? ? NA ? ? ? ? ? NA 2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ? ? ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ? ? ? ?? 65 ? ? ? ? ?? 2.6 ? ? ? NA ? ? ? ? ?? NA 2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? ? ? ?? 34 ? ? ? ? ?? 2.7 ? ?? NA ? ? ? ? ?? NA 3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ? ? ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? NA ? ? ? ? ? ? NA 3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? NA ? ? ? ? ? ? NA explications: delais = the date of "responsed_at"? - the date of precedent "responsed_at" scores1 is measured every month scores2 and 3 are measured every three months first thing is :?? if the 20<delais <45, this count one month of delais if the 45<=delais <60, this count two month of delais,so add one line with the copy of the precedent line,and change the delais to 0 if the 60 <= delais <=90, this count three month of delais, so add two lines with the copy of the precedent line,and change these two delais to 0 if the delais >90, delete all the following lines and add a column "t", "t" means the month, "t" is in order second thing is : I want to replace NA of scores2 and scores3? with the precedent scores and finally get a table like this: patient_id????? number????? responsed_at? t ?? delais????? scores1 ? scores2 ? scores3 ?1????????????????????? 1??????????? 2010-05-26 ?? 0 ??? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? # scores2 and 3 are mesured every 3 ?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ?? 1 ? ? 42 ? ? ? ? ?? 2.5 ????? 0.5 ? ? ? ? ? 0.7? ?? ## months,replace the following with?????? precedent? numbers ?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???? 2 ?? 38??????????? 2.3?????? 0.5 ???? ? ?? 0.7??? # copy this line 1 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2010-08-14 ?? 3 ?? 0 ? ? ? ? ? ? 2.3 ? ? ?? 0.5 ????????? 0.7?? # add one line here and change delais to 0 ?1?????????????????????? 4??????????? 2010-10-01 ?? 4? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 1??????????????????????? 4 ?????????? 2010-10-01??? 5???? 0????????????? 2.5?????? 0.7?????????? 0.6 1??????????????????????? 4 ?????????? 2010-10-01??? 6 ??? 0?????????????? 2.5?????? 0.7?????????? 0.6 ?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ?? 7? ? ? 61 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 0 ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 1 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 2 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 (3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? 0.5 ? ? ? ? ?? 0.6)# delete these 2 line ????????????????????????????? (3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? 0.5 ? ? ? ? ? ? 0.6) ## and delete the following lines of this patient because the delais is 103 which superior to 90 Do you know how can i get this? Thank you so much GG 2013/5/9 GUANGUAN LUO <guanguanluo at gmail.com> Hello,>Because according to the database, the first time of collecting the data is just for an entry, an inclusion of the patients. What i should focus on is the difference between two month. If i don't include the t0, i think i will lose the information. I don't know if this is pertinent. >Thank you very much for your help, AK >? >GG > > >? >2013/5/9 arun <smartpink111 at yahoo.com> > >HI GG, >>I did the code according the calculation shown by you.? For example, in the first case, you had scores of? (0+1+2+3)/4, which is not 3 months.? It is 3+ initial month.? After that it is only 3 months that is repeating.? So, my code is doing this: >>?? 1st group (the scores) >>(0+1+2+3)/4 >>2nd group( scores) >>(5+6+7)/3 >>3rd group >>(8+9+10)/3 >> >>Here, the months are used only for illustration.? I am taking the mean of the scores. >> >>So, if you are only doing every 3 months, why do you need to combine the initial scores with the first 3 months?? Anyway, I did what you asked for. >> >> >>Regards, >>Arun >> >> >>________________________________ >>From: GUANGUAN LUO <guanguanluo at gmail.com> >>To: arun <smartpink111 at yahoo.com> >>Sent: Thursday, May 9, 2013 4:19 AM >> >>Subject: Re: how to calculate the mean in a period of time? >> >> >> >>Hi,Thank you so much for your help. I have seen your code. It's very complicated. The time 0 is the beginning of collecting all the information. >> >>The time 1 is the first month when follow the patients, time 2 is the second month ect. If i want to calculate the means of every 3 month do you think i should do like this? >> >>GG >> >>2013/5/7 arun <smartpink111 at yahoo.com> >> >>Hi, >>>Your question is still not clear. >>>May be this helps: >>> >>>dat2<- read.table(text=" >>> >>>patient_id????? t???????? scores >>>1????????????????????? 0??????????????? 1.6 >>>1????????????????????? 1??????????????? 2.6 >>>1????????????????????? 2???????????????? 2.2 >>>1????????????????????? 3???????????????? 1.8 >>>2????????????????????? 0????????????????? 2.3 >>>2?????????????????????? 2???????????????? 2.5 >>>2????????????????????? 4????????????????? 2.6 >>>2?????????????????????? 5???????????????? 1.5 >>>",sep="",header=TRUE) >>> >>>library(plyr) >>>?dat2New<-ddply(dat2,.(patient_id),summarize,t=seq(min(t),max(t))) >>>?res<-join(dat2New,dat2,type="full") >>>res1<-do.call(rbind,lapply(split(res,res$patient_id),function(x) {x1<-x[x$t!=0,];do.call(rbind,lapply(split(x1,((x1$t-1)%/%3)+1),function(y) {y1<-if(any(y$t==1)) rbind(x[x$t==0,],y) else y; data.frame(patient_id=unique(y1$patient_id),scores=mean(y1$scores,na.rm=TRUE))}) ) })) >>>?row.names(res1)<-1:nrow(res1) >>>res1$period<-with(res1,ave(patient_id,patient_id,FUN=seq)) >>>?res1 >>>#? patient_id scores period >>>#1????????? 1?? 2.05????? 1 >>>#2????????? 2?? 2.40????? 1 >>>#3????????? 2?? 2.05????? 2 >>> >>> >>>A.K. >>> >>> >>> >>> >>>________________________________ >>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>To: arun <smartpink111 at yahoo.com> >>>Sent: Tuesday, May 7, 2013 11:29 AM >>>Subject: Re: how to calculate the mean in a period of time? >>> >>> >>> >>> >>>Yes ? as you have said, probably , it's not continuous. >>> >>> >>>2013/5/7 arun <smartpink111 at yahoo.com> >>> >>>Hi, >>>>Your question is not clear.? You mentioned to calculate the mean of 3 months, but infact you added the scores for t=0,1,2,3 as first 3 months, then possibly 4,5,6 as the next.? So, it is not exactly three months.? Isn't it? >>>> >>>> >>>>Dear R experts, >>>>sorry to trouble you again. >>>>My data is like this now : >>>>patient_id ? ? ?t ? ? ? ? scores >>>>1 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ?1.6 >>>>1 ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?2.6 >>>>1 ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? ? 2.2 >>>>1 ? ? ? ? ? ? ? ? ? ? ?3 ? ? ? ? ? ? ? ? 1.8 >>>>2 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?2.3 >>>>2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? 2.5 >>>>2 ? ? ? ? ? ? ? ? ? ? ?4 ? ? ? ? ? ? ? ? ?2.6 >>>>2 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? 1.5 >>>> >>>>I want to calculate the mean of period of 3 months, just get a table like this >>>> >>>>patient_id ? ? period ? ? scores >>>>1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ? ?(1.6+2.6+2.2+1.8)/4 >>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? 2.4 ? ? ? ? ? ? ? ? ? ? (2.3+2.5)/2 >>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ?(2.6+1.5)/2 >>>> >>>>thank you in avance >>>> >>> >> >? ?? ???????
Hi, Try this: ?dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & delais>20, 1,ifelse(delais<60 & delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) dat1$idx1<-c(dat1$idx[-head(dat1$idx,1)],1) library(zoo) res1<-do.call(rbind,lapply(split(dat1,dat1$patient_id),function(x) {x$idx[as.logical(cumsum(is.na(x$idx)))]<-NA; x1<-x[!is.na(x$idx),]; x1[,6:8]<-na.locf(x1[,6:8]);x1$idx1[is.na(x1$idx1)]<-1; x2<-x1[rep(seq_len(nrow(x1)),x1$idx1),]; x2$delais[duplicated(x2$delais,fromLast=FALSE)]<-0; x2$t<-seq(0,nrow(x2)-1,1);x2[,-c(8:9)]})) ?row.names(res1)<- 1:nrow(res1) ?res2<- res1[,c(1:3,8,4:7)] ?res2 #?? patient_id number responsed_at t delais scores1 scores2 scores3 #1?????????? 1????? 1?? 2010-05-26 0???? NA???? 2.6???? 0.5???? 0.7 #2?????????? 1????? 2?? 2010-07-07 1???? 42???? 2.5???? 0.5???? 0.7 #3?????????? 1????? 3?? 2010-08-14 2???? 38???? 2.3???? 0.5???? 0.7 #4?????????? 1????? 3?? 2010-08-14 3????? 0???? 2.3???? 0.5???? 0.7 #5?????????? 1????? 4?? 2010-10-01 4???? 48???? 2.5???? 0.7???? 0.6 #6?????????? 1????? 4?? 2010-10-01 5????? 0???? 2.5???? 0.7???? 0.6 #7?????????? 1????? 4?? 2010-10-01 6????? 0???? 2.5???? 0.7???? 0.6 #8?????????? 1????? 5?? 2010-12-01 7???? 61???? 2.5???? 0.7???? 0.6 #9?????????? 2????? 1?? 2011-07-19 0???? NA???? 2.5???? 0.8???? 0.5 #10????????? 2????? 1?? 2011-07-19 1????? 0???? 2.5???? 0.8???? 0.5 #11????????? 2????? 1?? 2011-07-19 2????? 0???? 2.5???? 0.8???? 0.5 #12????????? 2????? 2?? 2011-09-22 3???? 65???? 2.6???? 0.8???? 0.5 #13????????? 2????? 3?? 2011-10-26 4???? 34???? 2.7???? 0.8???? 0.5 #14????????? 3????? 1?? 2011-07-17 0???? NA???? 2.8???? 0.5???? 0.6 A.K. ________________________________ From: GUANGUAN LUO <guanguanluo at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Friday, May 17, 2013 9:33 AM Subject: Re: how to calculate the mean in a period of time? Hello? Thank you for your help the lines added to the tables are the precedent lines but not the followed lines, if i just change x2<-x1[rep(seq_len(nrow(x1)-1), is that ok? and so the delais should be changed too, isn't it? GG 2013/5/17 arun <smartpink111 at yahoo.com> Hi,>No problem. > >Arun > > > > > > >________________________________ >From: GUANGUAN LUO <guanguanluo at gmail.com> >To: arun <smartpink111 at yahoo.com> >Sent: Friday, May 17, 2013 4:19 AM > >Subject: Re: how to calculate the mean in a period of time? > > > >Ah, yes, that is the wrong thing i have written. Thank you so much. the output which you have got is right. >Thanks a lot. >GG > > >2013/5/16 arun <smartpink111 at yahoo.com> > >Hi, >>The output you showed is not clear especially the for the scores3, >> >>? 2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 >>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 >>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>In the input data, the scores3 column didn't had 0.8. >> >> >>This is what I got: >>dat1<- read.table(text=" >> >>patient_id????? number????? responsed_at????? delais????? scores1?? scores2?? scores3 >>?1????????????????????? 1??????????? 2010-05-26???????? NA?????????? 2.6?????? 0.5??????????? 0.7?? >>?1????????????????????? 2???????????? 2010-07-07???????? 42??????????? 2.5?????? NA?????????? NA??????? >>?1?????????????????????? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA?????????? NA?? >>?1?????????????????????? 4??????????? 2010-10-01????????? 48??????????? 2.5?????? 0.7?????????? 0.6 >>?1?????????????????????? 5??????????? 2010-12-01????????? 61??????????? 2.5?????? NA?????????? NA >>2??????????????????????? 1??????????? 2011-07-19????????? NA?????????? 2.5?????? 0.8??????????? 0.5 >>2???????????????????????? 2?????????? 2011-09-22????????? 65??????????? 2.6?????? NA??????????? NA >>2??????????????????????? 3???????????? 2011-10-26????????? 34??????????? 2.7????? NA??????????? NA >>3??????????????????????? 1???????????? 2011-07-17???????? NA?????????? 2.8????? 0.5???????????? 0.6 >>3??????????????????????? 2??????????? 2011-10-30????????? 103?????????? 2.6????? NA???????????? NA >>3???????????????????????? 3????????????? 2011-12-23??????? 54??????????? 2.5????? NA???????????? NA >>",sep="",header=TRUE,stringsAsFactors=FALSE) >> >>?dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & delais>20, 1,ifelse(delais<60 & delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) >>library(zoo) >>res<-do.call(rbind,lapply(split(dat1,dat1$patient_id),function(x) {x$idx[as.logical(cumsum(is.na(x$idx)))]<-NA; x1<-x[!is.na(x$idx),]; x1[,6:8]<-na.locf(x1[,6:8]);x2<-x1[rep(seq_len(nrow(x1)),x1$idx),]; x2$delais[duplicated(x2$delais,fromLast=TRUE)]<-0; x2$t<-seq(0,nrow(x2)-1,1);x2})) >> >> >>row.names(res)<- 1:nrow(res) >>?res1<- res[,c(1:3,9,4:7)] >>res1 >>#?? patient_id number responsed_at t delais scores1 scores2 scores3 >>#1?????????? 1????? 1?? 2010-05-26 0???? NA???? 2.6???? 0.5???? 0.7 >>#2?????????? 1????? 2?? 2010-07-07 1???? 42???? 2.5???? 0.5???? 0.7 >>#3?????????? 1????? 3?? 2010-08-14 2???? 38???? 2.3???? 0.5???? 0.7 >>#4?????????? 1????? 4?? 2010-10-01 3????? 0???? 2.5???? 0.7???? 0.6 >>#5?????????? 1????? 4?? 2010-10-01 4???? 48???? 2.5???? 0.7???? 0.6 >>#6?????????? 1????? 5?? 2010-12-01 5????? 0???? 2.5???? 0.7???? 0.6 >>#7?????????? 1????? 5?? 2010-12-01 6????? 0???? 2.5???? 0.7???? 0.6 >>#8?????????? 1????? 5?? 2010-12-01 7???? 61???? 2.5???? 0.7???? 0.6 >>#9?????????? 2????? 1?? 2011-07-19 0???? NA???? 2.5???? 0.8???? 0.5 >>#10????????? 2????? 2?? 2011-09-22 1????? 0???? 2.6???? 0.8???? 0.5 >>#11????????? 2????? 2?? 2011-09-22 2????? 0???? 2.6???? 0.8???? 0.5 >>#12????????? 2????? 2?? 2011-09-22 3???? 65???? 2.6???? 0.8???? 0.5 >>#13????????? 2????? 3?? 2011-10-26 4???? 34???? 2.7???? 0.8???? 0.5 >>#14????????? 3????? 1?? 2011-07-17 0???? NA???? 2.8???? 0.5???? 0.6 >> >>A.K. >> >>________________________________ >>From: GUANGUAN LUO <guanguanluo at gmail.com> >>To: arun <smartpink111 at yahoo.com> >>Sent: Thursday, May 16, 2013 12:05 PM >> >>Subject: Re: how to calculate the mean in a period of time? >> >> >> >> >>Hello, AK, >>now i have a problem really complicated for me, >> >>Now my table is like this: >> >>patient_id????? number????? responsed_at????? delais????? scores1 ? scores2 ? scores3 >>?1????????????????????? 1??????????? 2010-05-26 ??????? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? >>?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ? ? ? ? 42 ? ? ? ? ?? 2.5 ????? NA ? ? ? ? ? NA? ? ? ?? >>?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA????? ? ?? NA ?? >>?1?????????????????????? 4??????????? 2010-10-01 ? ? ? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ? ? ? ?? 61 ? ? ? ? ?? 2.5 ? ? ? NA ? ? ? ? ? NA >>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ? ? ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ? ? ? ?? 65 ? ? ? ? ?? 2.6 ? ? ? NA ? ? ? ? ?? NA >>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? ? ? ?? 34 ? ? ? ? ?? 2.7 ? ?? NA ? ? ? ? ?? NA >>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ? ? ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? NA ? ? ? ? ? ? NA >>3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? NA ? ? ? ? ? ? NA >> >>explications: delais = the date of "responsed_at"? - the date of precedent "responsed_at" >>scores1 is measured every month >>scores2 and 3 are measured every three months >> >>first thing is :?? if the 20<delais <45, this count one month of delais >>if the 45<=delais <60, this count two month of delais,so add one line with the copy of the precedent line,and change the delais to 0 >> >>if the 60 <= delais <=90, this count three month of delais, so add two lines with the copy of the precedent line,and change these two delais to 0 >> >>if the delais >90, delete all the following lines >> >>and add a column "t", "t" means the month, "t" is in order >> >>second thing is : >>I want to replace NA of scores2 and scores3? with the precedent scores >> >>and finally get a table like this: >> >>patient_id????? number????? responsed_at? t ?? delais????? scores1 ? scores2 ? scores3 >>?1????????????????????? 1??????????? 2010-05-26 ?? 0 ??? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? # scores2 and 3 are mesured every 3 >>?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ?? 1 ? ? 42 ? ? ? ? ?? 2.5 ????? 0.5 ? ? ? ? ? 0.7? ?? ## months,replace the following with?????? precedent? numbers >>?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???? 2 ?? 38??????????? 2.3?????? 0.5 ???? ? ?? 0.7??? # copy this line >>1 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2010-08-14 ?? 3 ?? 0 ? ? ? ? ? ? 2.3 ? ? ?? 0.5 ????????? 0.7?? # add one line here and change delais to 0 >>?1?????????????????????? 4??????????? 2010-10-01 ?? 4? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>1??????????????????????? 4 ?????????? 2010-10-01??? 5???? 0????????????? 2.5?????? 0.7?????????? 0.6 >>1??????????????????????? 4 ?????????? 2010-10-01??? 6 ??? 0?????????????? 2.5?????? 0.7?????????? 0.6 >>?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ?? 7? ? ? 61 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 0 ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 1 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 2 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 >>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 >>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>(3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? 0.5 ? ? ? ? ?? 0.6)# delete these 2 line ????????????????????????????? >> >>(3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? 0.5 ? ? ? ? ? ? 0.6) ## and delete the following lines of this patient because the delais is 103 which superior to 90 >> >> >> >>Do you know how can i get this? >>Thank you so much >> >>GG >> >> >>2013/5/9 GUANGUAN LUO <guanguanluo at gmail.com> >> >>Hello, >>>Because according to the database, the first time of collecting the data is just for an entry, an inclusion of the patients. What i should focus on is the difference between two month. If i don't include the t0, i think i will lose the information. I don't know if this is pertinent. >>>Thank you very much for your help, AK >>>? >>>GG >>> >>> >>>? >>>2013/5/9 arun <smartpink111 at yahoo.com> >>> >>>HI GG, >>>>I did the code according the calculation shown by you.? For example, in the first case, you had scores of? (0+1+2+3)/4, which is not 3 months.? It is 3+ initial month.? After that it is only 3 months that is repeating.? So, my code is doing this: >>>>?? 1st group (the scores) >>>>(0+1+2+3)/4 >>>>2nd group( scores) >>>>(5+6+7)/3 >>>>3rd group >>>>(8+9+10)/3 >>>> >>>>Here, the months are used only for illustration.? I am taking the mean of the scores. >>>> >>>>So, if you are only doing every 3 months, why do you need to combine the initial scores with the first 3 months?? Anyway, I did what you asked for. >>>> >>>> >>>>Regards, >>>>Arun >>>> >>>> >>>>________________________________ >>>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>>To: arun <smartpink111 at yahoo.com> >>>>Sent: Thursday, May 9, 2013 4:19 AM >>>> >>>>Subject: Re: how to calculate the mean in a period of time? >>>> >>>> >>>> >>>>Hi,Thank you so much for your help. I have seen your code. It's very complicated. The time 0 is the beginning of collecting all the information. >>>> >>>>The time 1 is the first month when follow the patients, time 2 is the second month ect. If i want to calculate the means of every 3 month do you think i should do like this? >>>> >>>>GG >>>> >>>>2013/5/7 arun <smartpink111 at yahoo.com> >>>> >>>>Hi, >>>>>Your question is still not clear. >>>>>May be this helps: >>>>> >>>>>dat2<- read.table(text=" >>>>> >>>>>patient_id????? t???????? scores >>>>>1????????????????????? 0??????????????? 1.6 >>>>>1????????????????????? 1??????????????? 2.6 >>>>>1????????????????????? 2???????????????? 2.2 >>>>>1????????????????????? 3???????????????? 1.8 >>>>>2????????????????????? 0????????????????? 2.3 >>>>>2?????????????????????? 2???????????????? 2.5 >>>>>2????????????????????? 4????????????????? 2.6 >>>>>2?????????????????????? 5???????????????? 1.5 >>>>>",sep="",header=TRUE) >>>>> >>>>>library(plyr) >>>>>?dat2New<-ddply(dat2,.(patient_id),summarize,t=seq(min(t),max(t))) >>>>>?res<-join(dat2New,dat2,type="full") >>>>>res1<-do.call(rbind,lapply(split(res,res$patient_id),function(x) {x1<-x[x$t!=0,];do.call(rbind,lapply(split(x1,((x1$t-1)%/%3)+1),function(y) {y1<-if(any(y$t==1)) rbind(x[x$t==0,],y) else y; data.frame(patient_id=unique(y1$patient_id),scores=mean(y1$scores,na.rm=TRUE))}) ) })) >>>>>?row.names(res1)<-1:nrow(res1) >>>>>res1$period<-with(res1,ave(patient_id,patient_id,FUN=seq)) >>>>>?res1 >>>>>#? patient_id scores period >>>>>#1????????? 1?? 2.05????? 1 >>>>>#2????????? 2?? 2.40????? 1 >>>>>#3????????? 2?? 2.05????? 2 >>>>> >>>>> >>>>>A.K. >>>>> >>>>> >>>>> >>>>> >>>>>________________________________ >>>>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>>>To: arun <smartpink111 at yahoo.com> >>>>>Sent: Tuesday, May 7, 2013 11:29 AM >>>>>Subject: Re: how to calculate the mean in a period of time? >>>>> >>>>> >>>>> >>>>> >>>>>Yes ? as you have said, probably , it's not continuous. >>>>> >>>>> >>>>>2013/5/7 arun <smartpink111 at yahoo.com> >>>>> >>>>>Hi, >>>>>>Your question is not clear.? You mentioned to calculate the mean of 3 months, but infact you added the scores for t=0,1,2,3 as first 3 months, then possibly 4,5,6 as the next.? So, it is not exactly three months.? Isn't it? >>>>>> >>>>>> >>>>>>Dear R experts, >>>>>>sorry to trouble you again. >>>>>>My data is like this now : >>>>>>patient_id ? ? ?t ? ? ? ? scores >>>>>>1 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ?1.6 >>>>>>1 ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?2.6 >>>>>>1 ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? ? 2.2 >>>>>>1 ? ? ? ? ? ? ? ? ? ? ?3 ? ? ? ? ? ? ? ? 1.8 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?2.3 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? 2.5 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ?4 ? ? ? ? ? ? ? ? ?2.6 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? 1.5 >>>>>> >>>>>>I want to calculate the mean of period of 3 months, just get a table like this >>>>>> >>>>>>patient_id ? ? period ? ? scores >>>>>>1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ? ?(1.6+2.6+2.2+1.8)/4 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? 2.4 ? ? ? ? ? ? ? ? ? ? (2.3+2.5)/2 >>>>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ?(2.6+1.5)/2 >>>>>> >>>>>>thank you in avance >>>>>> >>>>> >>>> >>>? ?? ??????? >> >
HI GG, I thought you were referring about the solution that I sent today.? Sorry, I didn't check it. TRy this: dat1<- read.table(text=" patient_id????? number????? responsed_at????? delais????? scores1?? scores2?? scores3 ?1????????????????????? 1??????????? 2010-05-26???????? NA?????????? 2.6?????? 0.5??????????? 0.7? ?1????????????????????? 2???????????? 2010-07-07???????? 42??????????? 2.5?????? NA?????????? NA?????? ?1?????????????????????? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA?????????? NA? ?1?????????????????????? 4??????????? 2010-10-01????????? 48??????????? 2.5?????? 0.7?????????? 0.6 ?1?????????????????????? 5??????????? 2010-12-01????????? 61??????????? 2.5?????? NA?????????? NA 2??????????????????????? 1??????????? 2011-07-19????????? NA?????????? 2.5?????? 0.8??????????? 0.5 2???????????????????????? 2?????????? 2011-09-22????????? 65??????????? 2.6?????? NA??????????? NA 2??????????????????????? 3???????????? 2011-10-26????????? 34??????????? 2.7????? NA??????????? NA 3??????????????????????? 1???????????? 2011-07-17???????? NA?????????? 2.8????? 0.5???????????? 0.6 3??????????????????????? 2??????????? 2011-10-30????????? 103?????????? 2.6????? NA???????????? NA 3???????????????????????? 3????????????? 2011-12-23??????? 54??????????? 2.5????? NA???????????? NA ",sep="",header=TRUE,stringsAsFactors=FALSE) dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & delais>20, 1,ifelse(delais<60 & delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) #deleted lines dat1[as.logical(with(dat1,ave(idx,patient_id,FUN=function(x) cumsum(is.na(x))))),-8] #?? patient_id number responsed_at delais scores1 scores2 scores3 #10????????? 3????? 2?? 2011-10-30??? 103???? 2.6????? NA????? NA #11????????? 3????? 3?? 2011-12-23???? 54???? 2.5????? NA????? NA ?nrow(dat1[as.logical(with(dat1,ave(idx,patient_id,FUN=function(x) cumsum(is.na(x))))),-8]) #[1] 2 #or table(with(dat1,ave(idx,patient_id,FUN=function(x) cumsum(is.na(x)))))[2] #1 #2 #added lines datSub<-dat1[!as.logical(with(dat1,ave(idx,patient_id,FUN=function(x) cumsum(is.na(x))))),] #count ?sum(with(datSub,idx[idx>1 & !is.na(idx)])-1) #[1] 5 A.K. ________________________________ From: GUANGUAN LUO <guanguanluo at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Wednesday, May 22, 2013 11:30 AM Subject: Re: how to calculate the mean in a period of time? Hi Arun, I meant to say "number of observations you have deleted". In the table, you have deleted some lines which have a delais > 90 days, and added some lines copied from the precedent lines. Can I calculate the number of lines that you have deleted and the number of lines that you have added? GG 2013/5/22 arun <smartpink111 at yahoo.com> Hi GG,>It is not clear what you meant by "number of observations you have detected".? Is it the number of observations in the initial dataset for each patient_id? Number of observations added also means what?? In the final result, we are taking the means for each 3 observations keeping the t="0"? along with the first cluster for each Patient_id. > > > > > >________________________________ >From: GUANGUAN LUO <guanguanluo at gmail.com> >To: arun <smartpink111 at yahoo.com> >Sent: Wednesday, May 22, 2013 11:13 AM > >Subject: Re: how to calculate the mean in a period of time? > > > >Hello A.K, >for this reconstructed table, can i calculate the number of the observations you have delected and the number of the observations that you have added? >Thanks > >GG > > >2013/5/17 arun <smartpink111 at yahoo.com> > > >> >>Hi, >>Try this: >> >>?dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & >>delais>20, 1,ifelse(delais<60 & >>delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) >>dat1$idx1<-c(dat1$idx[-head(dat1$idx,1)],1) >> >>library(zoo) >>res1<-do.call(rbind,lapply(split(dat1,dat1$patient_id),function(x) {x$idx[as.logical(cumsum(is.na(x$idx)))]<-NA; x1<-x[!is.na(x$idx),]; x1[,6:8]<-na.locf(x1[,6:8]);x1$idx1[is.na(x1$idx1)]<-1; x2<-x1[rep(seq_len(nrow(x1)),x1$idx1),]; x2$delais[duplicated(x2$delais,fromLast=FALSE)]<-0; x2$t<-seq(0,nrow(x2)-1,1);x2[,-c(8:9)]})) >>?row.names(res1)<- 1:nrow(res1) >>?res2<- res1[,c(1:3,8,4:7)] >>?res2 >> >>#?? patient_id number responsed_at t delais scores1 scores2 scores3 >>#1?????????? 1????? 1?? 2010-05-26 0???? NA???? 2.6???? 0.5???? 0.7 >>#2?????????? 1????? 2?? 2010-07-07 1???? 42???? 2.5???? 0.5???? 0.7 >>#3?????????? 1????? 3?? 2010-08-14 2???? 38???? 2.3???? 0.5???? 0.7 >>#4?????????? 1????? 3?? 2010-08-14 3????? 0???? 2.3???? 0.5???? 0.7 >> >>#5?????????? 1????? 4?? 2010-10-01 4???? 48???? 2.5???? 0.7???? 0.6 >>#6?????????? 1????? 4?? 2010-10-01 5????? 0???? 2.5???? 0.7???? 0.6 >>#7?????????? 1????? 4?? 2010-10-01 6????? 0???? 2.5???? 0.7???? 0.6 >> >>#8?????????? 1????? 5?? 2010-12-01 7???? 61???? 2.5???? 0.7???? 0.6 >>#9?????????? 2????? 1?? 2011-07-19 0???? NA???? 2.5???? 0.8???? 0.5 >>#10????????? 2????? 1?? 2011-07-19 1????? 0???? 2.5???? 0.8???? 0.5 >>#11????????? 2????? 1?? 2011-07-19 2????? 0???? 2.5???? 0.8???? 0.5 >> >>#12????????? 2????? 2?? 2011-09-22 3???? 65???? 2.6???? 0.8???? 0.5 >>#13????????? 2????? 3?? 2011-10-26 4???? 34???? 2.7???? 0.8???? 0.5 >>#14????????? 3????? 1?? 2011-07-17 0???? NA???? 2.8???? 0.5???? 0.6 >>A.K. >> >>________________________________ >>From: GUANGUAN LUO <guanguanluo at gmail.com> >>To: arun <smartpink111 at yahoo.com> >>Sent: Friday, May 17, 2013 9:33 AM >> >>Subject: Re: how to calculate the mean in a period of time? >> >> >> >>Hello? >>Thank you for your help >>the lines added to the tables are the precedent lines but not the followed lines, if i just change x2<-x1[rep(seq_len(nrow(x1)-1), is that ok? and so the delais should be changed too, isn't it? >> >> >>GG >> >> >>2013/5/17 arun <smartpink111 at yahoo.com> >> >>Hi, >>>No problem. >>> >>>Arun >>> >>> >>> >>> >>> >>> >>>________________________________ >>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>To: arun <smartpink111 at yahoo.com> >>>Sent: Friday, May 17, 2013 4:19 AM >>> >>>Subject: Re: how to calculate the mean in a period of time? >>> >>> >>> >>>Ah, yes, that is the wrong thing i have written. Thank you so much. the output which you have got is right. >>>Thanks a lot. >>>GG >>> >>> >>>2013/5/16 arun <smartpink111 at yahoo.com> >>> >>>Hi, >>>>The output you showed is not clear especially the for the scores3, >>>> >>>>? 2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 >>>>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>>>In the input data, the scores3 column didn't had 0.8. >>>> >>>> >>>>This is what I got: >>>>dat1<- read.table(text=" >>>> >>>>patient_id????? number????? responsed_at????? delais????? scores1?? scores2?? scores3 >>>>?1????????????????????? 1??????????? 2010-05-26???????? NA?????????? 2.6?????? 0.5??????????? 0.7?? >>>>?1????????????????????? 2???????????? 2010-07-07???????? 42??????????? 2.5?????? NA?????????? NA??????? >>>>?1?????????????????????? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA?????????? NA?? >>>>?1?????????????????????? 4??????????? 2010-10-01????????? 48??????????? 2.5?????? 0.7?????????? 0.6 >>>>?1?????????????????????? 5??????????? 2010-12-01????????? 61??????????? 2.5?????? NA?????????? NA >>>>2??????????????????????? 1??????????? 2011-07-19????????? NA?????????? 2.5?????? 0.8??????????? 0.5 >>>>2???????????????????????? 2?????????? 2011-09-22????????? 65??????????? 2.6?????? NA??????????? NA >>>>2??????????????????????? 3???????????? 2011-10-26????????? 34??????????? 2.7????? NA??????????? NA >>>>3??????????????????????? 1???????????? 2011-07-17???????? NA?????????? 2.8????? 0.5???????????? 0.6 >>>>3??????????????????????? 2??????????? 2011-10-30????????? 103?????????? 2.6????? NA???????????? NA >>>>3???????????????????????? 3????????????? 2011-12-23??????? 54??????????? 2.5????? NA???????????? NA >>>>",sep="",header=TRUE,stringsAsFactors=FALSE) >>>> >>>>?dat1$idx<-with(dat1,ifelse(is.na(delais)|delais<45 & delais>20, 1,ifelse(delais<60 & delais>=45,2,ifelse(delais<=90 & delais>=60,3,NA)))) >>>>library(zoo) >>>>res<-do.call(rbind,lapply(split(dat1,dat1$patient_id),function(x) {x$idx[as.logical(cumsum(is.na(x$idx)))]<-NA; x1<-x[!is.na(x$idx),]; x1[,6:8]<-na.locf(x1[,6:8]);x2<-x1[rep(seq_len(nrow(x1)),x1$idx),]; x2$delais[duplicated(x2$delais,fromLast=TRUE)]<-0; x2$t<-seq(0,nrow(x2)-1,1);x2})) >>>> >>>> >>>>row.names(res)<- 1:nrow(res) >>>>?res1<- res[,c(1:3,9,4:7)] >>>>res1 >>>>#?? patient_id number responsed_at t delais scores1 scores2 scores3 >>>>#1?????????? 1????? 1?? 2010-05-26 0???? NA???? 2.6???? 0.5???? 0.7 >>>>#2?????????? 1????? 2?? 2010-07-07 1???? 42???? 2.5???? 0.5???? 0.7 >>>>#3?????????? 1????? 3?? 2010-08-14 2???? 38???? 2.3???? 0.5???? 0.7 >>>>#4?????????? 1????? 4?? 2010-10-01 3????? 0???? 2.5???? 0.7???? 0.6 >>>>#5?????????? 1????? 4?? 2010-10-01 4???? 48???? 2.5???? 0.7???? 0.6 >>>>#6?????????? 1????? 5?? 2010-12-01 5????? 0???? 2.5???? 0.7???? 0.6 >>>>#7?????????? 1????? 5?? 2010-12-01 6????? 0???? 2.5???? 0.7???? 0.6 >>>>#8?????????? 1????? 5?? 2010-12-01 7???? 61???? 2.5???? 0.7???? 0.6 >>>>#9?????????? 2????? 1?? 2011-07-19 0???? NA???? 2.5???? 0.8???? 0.5 >>>>#10????????? 2????? 2?? 2011-09-22 1????? 0???? 2.6???? 0.8???? 0.5 >>>>#11????????? 2????? 2?? 2011-09-22 2????? 0???? 2.6???? 0.8???? 0.5 >>>>#12????????? 2????? 2?? 2011-09-22 3???? 65???? 2.6???? 0.8???? 0.5 >>>>#13????????? 2????? 3?? 2011-10-26 4???? 34???? 2.7???? 0.8???? 0.5 >>>>#14????????? 3????? 1?? 2011-07-17 0???? NA???? 2.8???? 0.5???? 0.6 >>>> >>>>A.K. >>>> >>>>________________________________ >>>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>>To: arun <smartpink111 at yahoo.com> >>>>Sent: Thursday, May 16, 2013 12:05 PM >>>> >>>>Subject: Re: how to calculate the mean in a period of time? >>>> >>>> >>>> >>>> >>>>Hello, AK, >>>>now i have a problem really complicated for me, >>>> >>>>Now my table is like this: >>>> >>>>patient_id????? number????? responsed_at????? delais????? scores1 ? scores2 ? scores3 >>>>?1????????????????????? 1??????????? 2010-05-26 ??????? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? >>>>?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ? ? ? ? 42 ? ? ? ? ?? 2.5 ????? NA ? ? ? ? ? NA? ? ? ?? >>>>?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???????? 38??????????? 2.3?????? NA????? ? ?? NA ?? >>>>?1?????????????????????? 4??????????? 2010-10-01 ? ? ? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>>>?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ? ? ? ?? 61 ? ? ? ? ?? 2.5 ? ? ? NA ? ? ? ? ? NA >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ? ? ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>>>2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ? ? ? ?? 65 ? ? ? ? ?? 2.6 ? ? ? NA ? ? ? ? ?? NA >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? ? ? ?? 34 ? ? ? ? ?? 2.7 ? ?? NA ? ? ? ? ?? NA >>>>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ? ? ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>>>3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? NA ? ? ? ? ? ? NA >>>>3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? NA ? ? ? ? ? ? NA >>>> >>>>explications: delais = the date of "responsed_at"? - the date of precedent "responsed_at" >>>>scores1 is measured every month >>>>scores2 and 3 are measured every three months >>>> >>>>first thing is :?? if the 20<delais <45, this count one month of delais >>>>if the 45<=delais <60, this count two month of delais,so add one line with the copy of the precedent line,and change the delais to 0 >>>> >>>>if the 60 <= delais <=90, this count three month of delais, so add two lines with the copy of the precedent line,and change these two delais to 0 >>>> >>>>if the delais >90, delete all the following lines >>>> >>>>and add a column "t", "t" means the month, "t" is in order >>>> >>>>second thing is : >>>>I want to replace NA of scores2 and scores3? with the precedent scores >>>> >>>>and finally get a table like this: >>>> >>>>patient_id????? number????? responsed_at? t ?? delais????? scores1 ? scores2 ? scores3 >>>>?1????????????????????? 1??????????? 2010-05-26 ?? 0 ??? NA?????????? 2.6?????? 0.5?????? ? ?? 0.7 ?? # scores2 and 3 are mesured every 3 >>>>?1????????????????????? 2?? ? ? ? ? ? 2010-07-07 ?? 1 ? ? 42 ? ? ? ? ?? 2.5 ????? 0.5 ? ? ? ? ? 0.7? ?? ## months,replace the following with?????? precedent? numbers >>>>?1 ? ? ? ? ? ? ? ? ? ? ? 3??????????? 2010-08-14???? 2 ?? 38??????????? 2.3?????? 0.5 ???? ? ?? 0.7??? # copy this line >>>>1 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2010-08-14 ?? 3 ?? 0 ? ? ? ? ? ? 2.3 ? ? ?? 0.5 ????????? 0.7?? # add one line here and change delais to 0 >>>>?1?????????????????????? 4??????????? 2010-10-01 ?? 4? ?? 48 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>>>1??????????????????????? 4 ?????????? 2010-10-01??? 5???? 0????????????? 2.5?????? 0.7?????????? 0.6 >>>>1??????????????????????? 4 ?????????? 2010-10-01??? 6 ??? 0?????????????? 2.5?????? 0.7?????????? 0.6 >>>>?1 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ?? 2010-12-01 ?? 7? ? ? 61 ? ? ? ? ?? 2.5 ? ? ? 0.7 ? ? ? ? ? 0.6 >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 0 ? ?? NA ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 1 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ?? 2011-07-19 ?? 2 ? ?? 0 ? ? ? ? ? 2.5 ? ? ? 0.8 ? ? ? ? ?? 0.5 >>>>2 ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? 2011-09-22 ?? 3 ? ? 65 ? ? ? ? ?? 2.6 ? ? ? 0.8 ? ? ? ? ?? 0.8 >>>>2 ? ? ? ? ? ? ? ? ? ? ?? 3 ? ? ? ? ? ? 2011-10-26 ? 4? ??? 34 ? ? ? ? ?? 2.7 ? ? 0.8 ? ? ? ? ?? 0.8 >>>>3 ? ? ? ? ? ? ? ? ? ? ?? 1 ? ? ? ? ? ? 2011-07-17 ?? 0 ? ? NA ? ? ? ? ? 2.8 ? ?? 0.5 ? ? ? ? ? ? 0.6 >>>>(3 ? ? ? ? ? ? ? ? ? ? ?? 2 ? ? ? ? ?? 2011-10-30 ? ? ? ?? 103 ? ? ? ? ? 2.6 ? ?? 0.5 ? ? ? ? ?? 0.6)# delete these 2 line ????????????????????????????? >>>> >>>>(3 ? ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ?? 2011-12-23 ? ? ?? 54 ? ? ? ? ?? 2.5 ? ?? 0.5 ? ? ? ? ? ? 0.6) ## and delete the following lines of this patient because the delais is 103 which superior to 90 >>>> >>>> >>>> >>>>Do you know how can i get this? >>>>Thank you so much >>>> >>>>GG >>>> >>>> >>>>2013/5/9 GUANGUAN LUO <guanguanluo at gmail.com> >>>> >>>>Hello, >>>>>Because according to the database, the first time of collecting the data is just for an entry, an inclusion of the patients. What i should focus on is the difference between two month. If i don't include the t0, i think i will lose the information. I don't know if this is pertinent. >>>>>Thank you very much for your help, AK >>>>>? >>>>>GG >>>>> >>>>> >>>>>? >>>>>2013/5/9 arun <smartpink111 at yahoo.com> >>>>> >>>>>HI GG, >>>>>>I did the code according the calculation shown by you.? For example, in the first case, you had scores of? (0+1+2+3)/4, which is not 3 months.? It is 3+ initial month.? After that it is only 3 months that is repeating.? So, my code is doing this: >>>>>>?? 1st group (the scores) >>>>>>(0+1+2+3)/4 >>>>>>2nd group( scores) >>>>>>(5+6+7)/3 >>>>>>3rd group >>>>>>(8+9+10)/3 >>>>>> >>>>>>Here, the months are used only for illustration.? I am taking the mean of the scores. >>>>>> >>>>>>So, if you are only doing every 3 months, why do you need to combine the initial scores with the first 3 months?? Anyway, I did what you asked for. >>>>>> >>>>>> >>>>>>Regards, >>>>>>Arun >>>>>> >>>>>> >>>>>>________________________________ >>>>>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>>>>To: arun <smartpink111 at yahoo.com> >>>>>>Sent: Thursday, May 9, 2013 4:19 AM >>>>>> >>>>>>Subject: Re: how to calculate the mean in a period of time? >>>>>> >>>>>> >>>>>> >>>>>>Hi,Thank you so much for your help. I have seen your code. It's very complicated. The time 0 is the beginning of collecting all the information. >>>>>> >>>>>>The time 1 is the first month when follow the patients, time 2 is the second month ect. If i want to calculate the means of every 3 month do you think i should do like this? >>>>>> >>>>>>GG >>>>>> >>>>>>2013/5/7 arun <smartpink111 at yahoo.com> >>>>>> >>>>>>Hi, >>>>>>>Your question is still not clear. >>>>>>>May be this helps: >>>>>>> >>>>>>>dat2<- read.table(text=" >>>>>>> >>>>>>>patient_id????? t???????? scores >>>>>>>1????????????????????? 0??????????????? 1.6 >>>>>>>1????????????????????? 1??????????????? 2.6 >>>>>>>1????????????????????? 2???????????????? 2.2 >>>>>>>1????????????????????? 3???????????????? 1.8 >>>>>>>2????????????????????? 0????????????????? 2.3 >>>>>>>2?????????????????????? 2???????????????? 2.5 >>>>>>>2????????????????????? 4????????????????? 2.6 >>>>>>>2?????????????????????? 5???????????????? 1.5 >>>>>>>",sep="",header=TRUE) >>>>>>> >>>>>>>library(plyr) >>>>>>>?dat2New<-ddply(dat2,.(patient_id),summarize,t=seq(min(t),max(t))) >>>>>>>?res<-join(dat2New,dat2,type="full") >>>>>>>res1<-do.call(rbind,lapply(split(res,res$patient_id),function(x) {x1<-x[x$t!=0,];do.call(rbind,lapply(split(x1,((x1$t-1)%/%3)+1),function(y) {y1<-if(any(y$t==1)) rbind(x[x$t==0,],y) else y; data.frame(patient_id=unique(y1$patient_id),scores=mean(y1$scores,na.rm=TRUE))}) ) })) >>>>>>>?row.names(res1)<-1:nrow(res1) >>>>>>>res1$period<-with(res1,ave(patient_id,patient_id,FUN=seq)) >>>>>>>?res1 >>>>>>>#? patient_id scores period >>>>>>>#1????????? 1?? 2.05????? 1 >>>>>>>#2????????? 2?? 2.40????? 1 >>>>>>>#3????????? 2?? 2.05????? 2 >>>>>>> >>>>>>> >>>>>>>A.K. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>________________________________ >>>>>>>From: GUANGUAN LUO <guanguanluo at gmail.com> >>>>>>>To: arun <smartpink111 at yahoo.com> >>>>>>>Sent: Tuesday, May 7, 2013 11:29 AM >>>>>>>Subject: Re: how to calculate the mean in a period of time? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>Yes ? as you have said, probably , it's not continuous. >>>>>>> >>>>>>> >>>>>>>2013/5/7 arun <smartpink111 at yahoo.com> >>>>>>> >>>>>>>Hi, >>>>>>>>Your question is not clear.? You mentioned to calculate the mean of 3 months, but infact you added the scores for t=0,1,2,3 as first 3 months, then possibly 4,5,6 as the next.? So, it is not exactly three months.? Isn't it? >>>>>>>> >>>>>>>> >>>>>>>>Dear R experts, >>>>>>>>sorry to trouble you again. >>>>>>>>My data is like this now : >>>>>>>>patient_id ? ? ?t ? ? ? ? scores >>>>>>>>1 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ?1.6 >>>>>>>>1 ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? ?2.6 >>>>>>>>1 ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? ? 2.2 >>>>>>>>1 ? ? ? ? ? ? ? ? ? ? ?3 ? ? ? ? ? ? ? ? 1.8 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ?2.3 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? 2.5 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ?4 ? ? ? ? ? ? ? ? ?2.6 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? 1.5 >>>>>>>> >>>>>>>>I want to calculate the mean of period of 3 months, just get a table like this >>>>>>>> >>>>>>>>patient_id ? ? period ? ? scores >>>>>>>>1 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ? ?(1.6+2.6+2.2+1.8)/4 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 ? ? ? ? ? ? ? 2.4 ? ? ? ? ? ? ? ? ? ? (2.3+2.5)/2 >>>>>>>>2 ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 ? ? ? ? ? ? ? 2.05 ? ? ? ? ? ? ? ? ? ?(2.6+1.5)/2 >>>>>>>> >>>>>>>>thank you in avance >>>>>>>> >>>>>>> >>>>>> >>>>>? ?? ??????? >>>> >>> >> >
HI GG, I should had checked with multiple t=0 only rows. Apologies! Check if this work: (Changed the thread name as the solution applies to that problem) dat2<- read.csv("dat6.csv",header=TRUE,sep="\t",row.names=1) str(dat2) #'data.frame':??? 3896 obs. of? 3 variables: # $ patient_id: int? 2 2 2 2 2 2 2 2 2 2 ... # $ t???????? : int? 0 1 2 3 4 5 6 7 8 9 ... # $ basdai??? : num? 2.83 4.05 3.12 3.12 2.42 ... ? library(plyr) ?dat2New<-ddply(dat2,.(patient_id),summarize,t=seq(min(t),max(t))) ?res<-join(dat2New,dat2,type="full") ?lst1<-lapply(split(res,res$patient_id),function(x) {x1<-x[x$t!=0,];do.call(rbind,lapply(split(x1,((x1$t-1)%/%3)+1),function(y) {y1<-if(any(y$t==1)) rbind(x[x$t==0,],y) else y; data.frame(patient_id=unique(y1$patient_id),t=head(y1$t,1),basdai=mean(y1$basdai,na.rm=TRUE))}) ) }) dat3<-dat2[unlist(with(dat2,tapply(t,patient_id,FUN=function(x) x==0 & length(x)==1)),use.names=FALSE),] ?head(dat3,3) #??? patient_id t basdai #143???????? 10 0? 5.225 #555???????? 37 0? 2.450 #627???????? 42 0? 6.950 ?lst2<-split(dat3,seq_len(nrow(dat3))) ?lst1[lapply(lst1,length)==0]<-mapply(rbind,lst1[lapply(lst1,length)==0],lst2,SIMPLIFY=FALSE) res1<-do.call(rbind,lst1) ?row.names(res1)<- 1:nrow(res1) ?res2<- res1[,-2] res2$period<-with(res2,ave(patient_id,patient_id,FUN=seq_along)) ?#res2 #selected rows res2[c(48:51,189:192,210:215),] #??? patient_id?? basdai period #48?????????? 9 3.625000????? 8 #49????????? 10 5.225000????? 1 #t=0 only row #50????????? 11 6.018750????? 1 #51????????? 11 6.000000????? 2 #189???????? 36 6.166667????? 1 #190???????? 37 2.450000????? 1 #t=0 only row #191???????? 38 3.100000????? 1 #192???????? 38 3.575000????? 2 #210???????? 41 1.918750????? 1 #211???????? 41 4.025000????? 2 #212???????? 41 2.975000????? 3 #213???????? 41 1.725000????? 4 #214???????? 42 6.950000????? 1 #t=0 only row #215???????? 44 4.300000????? 1 A.K. ________________________________ From: GUANGUAN LUO <guanguanluo at gmail.com> To: arun <smartpink111 at yahoo.com> Sent: Thursday, May 23, 2013 9:50 AM Subject: Re: how to calculate the mean in a period of time? Hello, Arun, sorry to trouble you again, I tried your method and i found that for patient_id==10 et patient_id==37 ect, the scores are repeated 51 times, I don't understand why this occured. Thank you so much. GG