Я написал приведенный ниже код для создания набора данных из нескольких файлов dta, который определяет, сколько раз домохозяйству задавали вопрос и сколько раз они не отвечали. У меня возникли некоторые трудности с автоматическим созданием скорости отклика (NA / количество). Кто-нибудь может мне помочь?
df_counts_NAs <- list.files(path=mydirectory, pattern=".*dta") %>%
map(~{
read_dta(.x) %>%
group_by(hh_ID) %>%
summarize_all(.funs = list(count = ~n(), NAs = ~sum(is.na(.))))
}) %>%
reduce(full_join)
Вот два примера наборов данных, представляющих несколько файлов DTA.
hh_ID <- c(1,1,2,2,2)
question1 <- c(NA,1,0,0,0)
question2 <- c(1,1,NA,0,0)
df1 <- data.frame(hh_ID, question1, question2)
hh_ID <- c(1,1,1,2,2)
question3 <- c(NA,NA,0,0,0)
question4 <- c(1,1,1,NA,NA)
df2 <- data.frame(hh_ID, question3, question4)
Мои текущие данные выглядят так:
hh_ID <- c(1,2)
question1_count <- c(2,3)
question1_NAs <- c(1,0)
question2_count <- c(2,3)
question2_NAs <- c(0,1)
question3_count <- c(3,2)
question3_NAs <- c(2,0)
question4_count <- c(3,2)
question4_NAs <- c(0,2)
finaldf <- data.frame(hh_ID,
question1_count,
question1_NAs,
question2_count,
question2_NAs,
question3_count,
question3_NAs,
question4_count,
question4_NAs)
Однако мне нужно, чтобы столбцы выглядели так:
hh_ID question1_response_rate question2_response_rate etc.
Любой совет будет принят с благодарностью.
Спасибо!