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... ______________________________________________ R-help@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.