Hi, Try: ?df <- data.frame(ID=c("ID1","ID1","ID2","ID3","ID1","ID2"), date=c("Mar03","Mar01","Mar05","Mar02","Mar02","Mar01"),stringsAsFactors=FALSE) ?#as.Date(paste0(1,df[,2]),"%d%b%y") #assuming that year represents the digits #as.Date(paste0(2001,df[,2]),"%Y%b%d")# if the digits represent days #or #strptime(df[,2],"%b%d") #Either aggregate(date~ID,data=df,function(x) format(min(as.Date(paste0(2001,x),"%Y%b%d")),"%b%d")) #or library(plyr) ddply(df,.(ID),summarize, date=format(min(as.Date(paste0(2001,date),"%Y%b%d")),"%b%d")) #or ?df1 <- df[with(df,order(ID,as.Date(paste0(2001,date),"%Y%b%d"))),] df1[c(1,diff(as.numeric(gsub("[^0-9]","",df1$ID)))) !=0,] #or ?df1[c(TRUE,df1$ID[-1] != df1$ID[-length(df1$ID)]),] A.K. I need some help to do something in r that is done using pivots in excel. I have a data frame with IDs and dates against these ids. I need to get the minimum date against each id. eg. my datra frame is df[,1]=c(ID1,ID1,ID2,ID3,ID1,ID2) df[,2]=c(Mar03,Mar01. Mar 05,Mar02,Mar02,Mar01) I need the result to show ndf[,1] = ID1 ID2 ID3 ndf[,2] = Mar01 Mar 02 Mar 05 thanks...