Skip to content
Prev 313631 / 398513 Next

Hello R User

HI,
Try this:
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)
?dat1$Time1<-ave(dat1$Time,dat1$ID,FUN=function(x) c(0,diff(x)))
head(dat1,3)
#? ID Time Time1
#1? 1??? 3???? 0
#2? 1??? 6???? 3
#3? 1??? 7???? 1

#or
dat2<-unsplit(lapply(split(dat1,dat1$ID),function(x) {x$Time<-c(0,diff(x[,2])); return(x)}),dat1$ID)
head(dat2,3)
#? ID Time
#1? 1??? 0
#2? 1??? 3
#3? 1??? 1
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.