[R] Hello R User

arun smartpink111 at yahoo.com
Fri Dec 14 18:42:23 CET 2012


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