Hello! I wrote a code that works, but it looks ugly to me - it's full of loops. I am sure there is a much more elegant and shorter way to do it. Thanks a lot for any hints! Dimitri
# I have a data frame: x<-data.frame(group=c("group1","group2","group1","group2"), myweight=c(0.4,0.6,0.4,0.6), myweek=as.Date(c("2012-07-09","2012-07-09","2012-07-16","2012-07-16")), var1=c(1,10,2,20),var2=c(10,1,20,2)) (x) # For each week in "myweek", I'd like to build a weighted mean for var1 and var2 - using "myweight" as weight. # Below is my inelegant code: myweeks<-unique(x$myweek) nr.of.weeks<-length(myweeks) myvars<-c("var1","var2") mylist<-NULL for(i in 1:nr.of.weeks){ # i<-1 out<-NULL for(var in myvars){ # var<-myvars[2] temp.x<-x[x$myweek %in% myweeks[i],c("myweight",var)] temp.out<-weighted.mean(temp.x[[2]],temp.x[[1]]) out<-c(out,temp.out) } mylist[[i]]<-out names(mylist)[i]<-as.character(myweeks[i]) } desired<-as.data.frame(do.call(rbind,mylist)) names(desired)<-myvars (desired) -- Dimitri Liakhovitski marketfusionanalytics.com ______________________________________________ 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.