Re: [R] weighted mean by week

2012-07-18 Thread Dimitri Liakhovitski
David, thanks a lot! I tried x[-1] myself but forgot to delete 'group' from the keyby statement - this explains why it did not work for me. This is amazing - just 2 lines instead of my many-many. Great learning! Dimitri On Tue, Jul 17, 2012 at 10:49 PM, David Freedman wrote: > Honestly, I wasn't

Re: [R] weighted mean by week

2012-07-17 Thread David Freedman
Honestly, I wasn't sure what you wanted to do with 'group'. Here it is with the 'group' variable deleted library(data.table) dt=data.table(x[,-1]) dt[,lapply(.SD, function(x)weighted.mean(x,myweight)), keyby='myweek'] -- View this message in context: http://r.789695.n4.nabble.com/weighted

Re: [R] weighted mean by week

2012-07-17 Thread Dimitri Liakhovitski
David, many thanks. Did something get ommitted from your line?: ddply(x ,.(myweek), summarize, m1=weighted.mean(var1,myweight), m2=weighted.mean(var2,myweight)) Because it just reproduces x - in a somewhat different order... Thank you! Dimitri On Tue, Jul 17, 2012 at 9:22 PM, David Freedman wr

Re: [R] weighted mean by week

2012-07-17 Thread David Freedman
If there are many variables, I'd then suggest the data.table package: library(data.table) dt=data.table(x) dt[,lapply(.SD, function(x)weighted.mean(x,myweight)), keyby=c('group', 'myweek')] The '.SD' is an abbreviation for all the variables in the data table (excluding the grouping variables). T

Re: [R] weighted mean by week

2012-07-17 Thread Dimitri Liakhovitski
Thanks a lot, David. Indeed, it's much shorter. Unfortunately, in my real task I am dozens and dozens of variables like var1 and var2 so that manually specifying things like in "m1=weighted.mean(var1,myweight)" would take a lot of code and a very long time. Dimitri On Tue, Jul 17, 2012 at 6:34 PM,

Re: [R] weighted mean by week

2012-07-17 Thread David Freedman
The plyr package is very helpful for this: library(plyr) ddply(x ,.(myweek), summarize, m1=weighted.mean(var1,myweight), m2=weighted.mean(var2,myweight)) -- View this message in context: http://r.789695.n4.nabble.com/weighted-mean-by-week-tp4636814p4636816.html Sent from the R help mailing list

[R] weighted mean by week

2012-07-17 Thread Dimitri Liakhovitski
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),