[R] Hello R User

arun smartpink111 at yahoo.com
Fri Dec 14 19:26:41 CET 2012


HI,
Try:
dat2[,Time1:=c(0,diff(Time)),by=ID]
dat2[,CumSTime1:=cumsum(Time1),by=ID]


  head(dat2,4)
#   ID Time Time1 CumSTime1
#1:  1    3     0         0
#2:  1    6     3         3
#3:  1    7     1         4
#4:  1   10     3         7
A.K.

----- Original Message -----
From: bibek sharma <mbhpathak at gmail.com>
To: arun <smartpink111 at yahoo.com>
Cc: 
Sent: Friday, December 14, 2012 12:56 PM
Subject: Re: [R] Hello R User

Hi Arun,
Great!
Once we get, time1, I again wanna add time to its previous value for
example, wanna get 0,3 4 etc...
can I have suggestion?

On Fri, Dec 14, 2012 at 9:42 AM, arun <smartpink111 at yahoo.com> wrote:
> Hi,
>
> You could also use library(data.table) to do this faster.
> dat1<-read.table(text="
> ID    Time
> 1    3
> 1    6
> 1    7
> 1    10
> 1    16
> 2    12
> 2    18
> 2    19
> 2    25
> 2    28
> 2    30
> ",sep="",header=TRUE)
> library(data.table)
> dat2<-data.table(dat1)
> res<-dat2[,Time1:=c(0,diff(Time)),by=ID]
>  head(res,3)
>  #  ID Time Time1
> #1:  1    3     0
> #2:  1    6     3
> #3:  1    7     1
>
> #Comparing different approaches:
> set.seed(55)
> dat3<- data.frame(ID=rep(1:1000,each=500),Value=sample(1:800,5e5,replace=TRUE))
> dat4<-data.table(dat3)
> system.time(dat3$Value1<-ave(dat3$Value,dat3$ID,FUN=function(x) c(0,diff(x))))
> #   user  system elapsed
>  # 0.312   0.000   0.313
>
> ids<-unique(dat3$ID)
>  system.time({
>    for(id in ids){
>    dat3$Value[dat3$ID==id]<-c(0,diff(dat3$Value[dat3$ID==id]))
>    } })
> #   user  system elapsed
> # 36.938   0.868  37.873
>
> system.time(dat5<-dat4[,Value1:=c(0,diff(Value)),by=ID])
> #   user  system elapsed
>  # 0.036   0.000   0.037
> head(dat5)
> #   ID Value Value1
> #1:  1   439      0
> #2:  1   175   -264
> #3:  1    28   -147
> #4:  1   634    606
> #5:  1   449   -185
> #6:  1    60   -389
>  head(dat3)
> #  ID Value Value1
> #1  1     0      0
> #2  1  -264   -264
> #3  1  -147   -147
> #4  1   606    606
> #5  1  -185   -185
> #6  1  -389   -389
>
> A.K.
>
>
>
>
>
>
>
>
>
>
>
>
> ----- Original Message -----
> From: bibek sharma <mbhpathak at gmail.com>
> To: R help <r-help at r-project.org>
> Cc:
> Sent: Friday, December 14, 2012 10:51 AM
> Subject: [R] Hello R User
>
> Hello R User,
> In the sample data given below, time is recorded for each id
> subsequently. For the analysis, for each id, I would like to set 1st
> recorded time to zero and thereafter find the difference from previous
> time. I.e. for ID==1, I would like to see Time=0,3,1,3,6. This needs
> to be implemented to big data set.
> Any suggestions are much appreciated!
> Thanks,
> Bibek
>
> ID    Time
> 1    3
> 1    6
> 1    7
> 1    10
> 1    16
> 2    12
> 2    18
> 2    19
> 2    25
> 2    28
> 2    30
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>





More information about the R-help mailing list