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
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
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
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
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,
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
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),
7 matches
Mail list logo