У вас есть NA в столбце hmsacld, который вызывает ошибку, которую вы наблюдаете. Если вы хотите weighted.mean, вам нужно предоставить веса для каждого pspwght. Простой эксперимент - давайте отбросим все строки с NA внутри ESS:
library(tidyverse)
library(haven)
library(essurvey)
library(radiant.data)
ESS <- structure(list(cntry = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("AT",
"BE", "CH", "CZ", "DE", "EE", "ES", "FI", "FR", "GB", "HU", "IE",
"IL", "IS", "IT", "LT", "NL", "NO", "PL", "PT", "RU", "SE", "SI"
), class = "factor"), pspwght = c(1.17849552631378, 0.899471521377563,
0.31575334072113, 0.472467392683029, 2.24670553207397, 1.01137900352478,
1.83802974224091, 1.20280182361603, 0.320830971002579, 0.99757444858551,
0.550059616565704, 0.691191911697388, 0.411176264286041, 0.673080623149872,
1.28033947944641, 0.647780179977417, 2.93387079238892, 0.374067783355713,
0.696788847446442, 0.699867308139801), hmsacld = c(4, 4, 2, 3,
4, 1, NA, 2, 2, 1, 4, 2, 3, 3, 0, 4, 3, 1, 3, 4)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -20L))
ESS %>% # Use the ESS, then
transmute( # Create new variables and only keep these new ones
# Make the following variables factors:
cntry = as_factor(cntry),
# Make the following variables numeric:
pspwght = zap_labels(pspwght),
hmsacld = max(zap_labels(hmsacld), na.rm = TRUE) - zap_labels(hmsacld), #Turning scale around
) %>%
drop_na() %>%
group_by(cntry) %>% # Group data by country, then
summarize(
n = sum(pspwght, na.rm = TRUE),
mean_hmsacld = weighted.mean(hmsacld, pspwght, na.rm = TRUE),
sd_hmsacld = weighted.sd(hmsacld, pspwght),
se_hmsacld = sd_hmsacld / sqrt(n),
min95 = mean_hmsacld - se_hmsacld * qt(p = 0.975, df = n),
max95 = mean_hmsacld + se_hmsacld * qt(p = 0.975, df = n)
)
С уважением, Павел