Я использовал код для запуска средства для определения c значений переменных (demographi c breaks), однако теперь у меня есть данные, которые имеют переменную веса и нуждаются в вычислении взвешенных средних. Я уже использовал код для расчета выборочных средних, и мне было интересно, можно ли изменить или настроить функцию для вычисления взвешенного среднего. Вот некоторый код для генерации образцов данных
df <- data.frame(gender=c(2,2,1,1,2,2,1,1,1,1,1,1,2,2,2,2,1,2,2,1),
agegroup=c(2,2,7,5,5,5,2,7,2,2,4,4,4,3,4,5,3,3,6,6),
attitude_1=c(4,3,4,4,4,4,4,4,5,2,5,5,5,4,3,2,3,4,2,4),
attitude_2=c(4,4,1,3,4,2,4,5,5,5,5,4,5,4,3,3,4,4,4,4),
attitude_3=c(2,2,1,1,3,2,5,1,4,2,2,2,3,3,4,1,4,1,3,1),
income=c(40794,74579,62809,47280,72056,57908,70784,96742,66629,117530,79547,54110,39569,111217,109146,56421,106206,28385,85830,71110),
weight=c(1.77,1.89,2.29,6.14,2.07,5.03,0.73,1.60,1.95,2.56,5.41,2.02,6.87,3.23,3.01,4.68,3.42,2.75,2.31,4.04))
До сих пор я использовал этот код для получения примеров средств
assign("Gender_Profile_1",
data.frame(sapply(subset(df, gender==1), FUN = function(x) mean(x, na.rm = TRUE))))
> Gender_Profile_1
sapply.subset.df..gender....1...FUN...function.x..mean.x..na.rm...TRUE..
gender 1.000
agegroup 4.200
attitude_1 4.000
attitude_2 4.000
attitude_3 2.300
income 77274.700
weight 3.016
Как вы можете видеть, он генерирует Gender_Profile_1 со средствами для всех переменных. В моей попытке вычислить взвешенное среднее значение я попытался изменить "FUN =" на эту
assign("Gender_Profile_1",
data.frame(sapply(subset(df, gender==1), FUN = function(x) weighted.mean(x, w=weight,na.rm = TRUE))))
Я получаю следующее сообщение об ошибке
Error in weighted.mean.default(x, w = weight, na.rm = TRUE) :
'x' and 'w' must have the same length
Я пробовал все виды перестановок df $ weight и df $ x, но, похоже, ничего не работает. Любая помощь или идеи будут великолепны. Большое спасибо