mercredi 5 octobre 2016

how to calculate a weighted.mean with plyr on all columns in a data.frame?

Vote count: 0

just curious if there's a sneaky way to do this that i'm missing.

library(plyr)
library(data.table)

dfx <- data.frame(
  group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
  sex = sample(c("M", "F"), size = 29, replace = TRUE),
  age = runif(n = 29, min = 18, max = 54) ,
  score = runif( n = 29 ) ,
  weight = sample( 0:1 , 29 , replace = TRUE )
)

dt_dfx <- as.data.table(dfx)

unweighted mean comparisons

# mean of all columns not specified in by=
dt_dfx[ , lapply( .SD , mean ) , by = .(sex,group) ]

# here's how to match the data.table unweighted mean
ddply(dfx, .(group,sex), numcolwise(mean))

not sure how to do this with plyr

# weighted.mean of all columns not specified in by=
dt_dfx[ , lapply( .SD , weighted.mean , weight ) , by = .(sex,group) ]

# easy way to match the data.table weighted.mean?

thanks all

asked 32 secs ago

Let's block ads! (Why?)



how to calculate a weighted.mean with plyr on all columns in a data.frame?

Aucun commentaire:

Enregistrer un commentaire