Hi, Try: dat1<- read.table(text=" ID Date x2 x1????????? x3 56 25-Jun-01 10 2? 126 56 29-Oct-01 10 2? 140 56 18-Mar-02 10 2? 445 56 6-Jun-03 10 2??? 224 56 16-Jan-04? 10 2??? NA 58 10-Jan-02 10.8 1 715 58 26-Dec-03 10.8 1??? NA ",sep="",header=TRUE,stringsAsFactors=FALSE) ?unlist(with(dat1,by(as.Date(Date,format="%d-%b-%y"),ID,FUN=function(x) c(diff(x),NA))),use.names=FALSE) #[1] 126 140 445 224? NA 715? NA #or unlist(lapply(split(dat1,dat1$ID),function(x) c(diff(as.Date(x$Date,format="%d-%b-%y")),NA)),use.names=FALSE) #[1] 126 140 445 224? NA 715? NA A.K. ________________________________ From: farnoosh sheikhi <farnoosh_81 at yahoo.com> To: "smartpink111 at yahoo.com" <smartpink111 at yahoo.com> Sent: Tuesday, July 23, 2013 3:11 PM Subject: subtracting rows for unique Hi there, Hope you are doing well. I have a data set which looks like below, I want to create a new variable (x3-here) which subtracts the date for unique ID. For example for ID 56, the first value is the difference between ?29-Oct, and 25-June. Thanks for your help and time. ID Date x2 x1???? ? ? ?x3 56 25-Jun-01 10 2 126 56 29-Oct-01 10 2 140 56 18-Mar-02 10 2 445 56 6-Jun-03 10 2 224 56 16-Jan-04??NA ? ? ? ? ? ? NA 58 10-Jan-02 10.8 1 715 58 26-Dec-03 10.8 1 ? ? ? ? ? ? NA Best,Farnoosh Sheikhi?