Я пытаюсь применить функцию Hmisc
wdt.mean
к строкам фрейма данных.Обычно требуется два вектора, один для средних и один для весов средних.Я пытался найти решение dplyr
/ tidyr
/ purrr
, но не смог понять его.
library(Hmisc)
#build data frame with 10 weight columns and 10 mean columns
set.seed(10)
w = matrix(runif(200,0,1),ncol = 20)
w = w/rowSums(w)
m = matrix(runif(200,50,100),ncol = 20)
df <- as.data.frame(cbind(w,m))
colnames(df) <- c(paste0("weight",seq(1,20,1)),paste0("mean",seq(1,20,1)))
# calculate weighted means for each row
for (i in 1:nrow(df)) {
df$weighted.means [i] <- wtd.mean(x =as.numeric(df[i,21:40]), weights = as.numeric(df[i,1:20]) )
}
> df$weighted.means
[1] 70.74705 82.85015 82.40826 73.35798 70.02986 74.05543 73.64709 77.12899 72.56236 84.74055