# The problem:
# In data.frame d for each "id" find a sum of "var1", "var2"
# and keep the results in the same data.frame .
d = data.frame(ss=c(1111,1111,1111,2222,2222,4444,4444,4444),
id=c(1,1,1,2,2,4,4,4), var1 = round(rnorm(8),1 ), var2 = c(round(rnorm(8),1)))
d
varList = c("var1", "var2")
# alternative way of defining a list of variables:
# varList = setdiff(names(d), c("ss", "id"))
for (n in varList){
t = tapply(dn, d$id, sum, na.rm=TRUE)
dpaste("sum",n,sep="") = t[as.character(d$id)]
}