[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