This works:
library(plyr)
ddply(df,"x",numcolwise(sum))
in words: (1) split the data frame df
by the "x"
column; (2) for each chunk, take the sum of each numeric-valued column; (3) stick the results back into a single data frame. (dd
in ddply
stands for “take a d ata frame as input, return a d ata frame”)
Another, possibly clearer, approach:
aggregate(y~x,data=df,FUN=sum)
See quick/elegant way to construct mean/variance summary table for a related (slightly more complex) question.