The code (written in metrics) almost works, except for one place (.name). I changed it a bit:
sample<- structure(list(name = structure(c(1L, 1L, 1L, 2L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"), value = c(9L, 10L, 11L, 2L, 40L, 50L), etc1 = c(1L, 1L, 1L, 1L, 1L, 1L), etc2 = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("X", "Y"), class = "factor")), .Names = c("name", "value", "etc1", "etc2"), class = "data.frame", row.names = c(NA, -6L)) sample.m <- ddply(sample, 'name', summarize, value =mean(value), etc1=head(etc1,1), etc2=head(etc2,1)) sample.m name value etc1 etc2 1 A 10 1 X 2 B 2 1 Y 3 C 45 1 Y