[R] how to calculate the mean in a period of time?

arun smartpink111 at yahoo.com
Tue May 7 21:08:53 CEST 2013


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
>



More information about the R-help mailing list