Hi Felipe, Pasting the code from your second email with ?which.max() #changed 'test' to `hw` as hw2 <- ddply(hw,"id",summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Recaps=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?WaterTemp=mean(WaterTemp), TrapWeather=TrapWeather[which.max(Recaps)]) Now, change which.max to max, ddply(hw,"id",summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased), ?????????????????????????????????????? Recaps=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity), ?????????????????????????????????????? WaterTemp=mean(WaterTemp), TrapWeather=max(Recaps)) # id subSiteName nReleased Recaps?? MeanFL TrapTurbidity WaterTemp TrapWeather #1? 1?????? north?????? 686????? 5 36.05128???????? 2.450? 8.395417?????????? 5 #2? 2?????? north?????? 540???? 11 35.47000???????? 2.770? 8.824167????????? 11 #3? 3?????? north????? 1995???? 51 38.32692???????? 1.700? 9.220000????????? 51 #4? 4?????? north????? 1309???? 35 37.17000???????? 1.615? 9.277917????????? 35 #5? 5?????? north?????? 995???? 47 38.84152???????? 1.815? 8.660625????????? 47 So, it is better to rename the Recaps column to something else: ddply(hw,"id",summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased), ?????????????????????????????????????? Recaps1=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity), ?????????????????????????????????????? WaterTemp=mean(WaterTemp), TrapWeather=max(Recaps)) ##Check the difference If there are multiple rows with max values, then: ?hw1 <- data.frame(id=5, subSiteName="north", nReleased= 995, Recaps=46, MeanFL=38.42, TrapTurbidity=2.23, WaterTemp=8.6234, TrapWeather= "Clear") hw2 <- rbind(hw,hw1) #either create a list column res <- ddply(hw2,.(id),summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased),Recaps1=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity),WaterTemp=mean(WaterTemp),TW=list(as.character(TrapWeather[Recaps %in% max(Recaps)]))) #or use paste() res1 <- ddply(hw2,.(id),summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased),Recaps1=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity),WaterTemp=mean(WaterTemp),TW=paste(TrapWeather[Recaps %in% max(Recaps)],collapse=",")) A.K. ? On Tuesday, February 25, 2014 5:31 PM, Felipe Carrillo <mazatlanmexico at yahoo.com> wrote: Hi Arun, Could you help me with this what appears to be a simple question? I want to create a column called TW with a value from TrapWeather is selected based on the max value of Recaps by id. for example for id=4 the max Recaps value is 34 so I want TrapWeather to be 'Foggy' and so on. Thanks Arun library(plyr) hw <- structure(list(id = c(1L, 2L, 2L, 3L, 4L, 4L, 5L, 5L), subSiteName = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "north", class = "factor"), ??? nReleased = c(686L, 540L, 540L, 1995L, 1309L, 1309L, 995L, ??? 995L), Recaps = c(5L, 8L, 3L, 51L, 34L, 1L, 46L, 1L), MeanFL = c(36.05128205, ??? 35.38, 35.56, 38.32692308, 36.48, 37.86, 38.44230769, 39.24074074 ??? ), TrapTurbidity = c(2.450000048, 2.710000038, 2.829999924, ??? 1.700000048, 2.130000114, 1.100000024, 2, 1.629999995), WaterTemp = c(8.395416667, ??? 8.55625, 9.092083333, 9.22, 9.180833333, 9.375, 8.63875, ??? 8.6825), TrapWeather = structure(c(2L, 1L, 1L, 3L, 3L, 1L, ??? 2L, 4L), .Label = c("Clear", "Cloudy", "Foggy", "Rainy day" ??? ), class = "factor")), .Names = c("id", "subSiteName", "nReleased", "Recaps", "MeanFL", "TrapTurbidity", "WaterTemp", "TrapWeather" ), class = "data.frame", row.names = c(NA, -8L)) hw2 <- ddply(test,"id",summarise, subSiteName=unique(subSiteName),nReleased=unique(nReleased), ?????????????????????????????????????? Recaps=sum(Recaps),MeanFL=mean(MeanFL),TrapTurbidity=mean(TrapTurbidity), ?????????????????????????????????????? WaterTemp=mean(WaterTemp), TW=TrapWeather Where Recaps==max(Recaps)) hw2