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 <mazatlanmex...@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 ______________________________________________ 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.