Рассчитать процент NA по ID переменной в R - PullRequest
0 голосов
/ 09 января 2020

Название не требует пояснений. Нужно рассчитать процентное значение NA по группе идентификаторов в R. Есть много постов о расчете NA по столбцу переменных, но почти ничего о выполнении по группам строк.

1 Ответ

2 голосов
/ 09 января 2020

Если имеется несколько столбцов, после группировки по «ID» используйте от summarise_at до l oop над столбцами, создайте логический вектор с is.na, получите mean и умножьте на 100

library(dplyr)
df1 %>%
   group_by(ID) %>%
   summarise_at(vars(-group_cols()), ~ 100 *mean(is.na(.)))

Если мы хотим получить процент по всем другим переменным,

library(tidyr)
df1 %>%
   pivot_longer(cols = -ID) %>%
   group_by(ID) %>%
   summarise(Perc = 100 * mean(is.na(value)))

Или с aggregate из base R

aggregate(.~ ID, df1, FUN = function(x) 100 * mean(is.na(x)), na.action = na.pass)

Или, чтобы получить процентное соотношение, затем unlist, остальные столбцы, создайте table с логическим вектором и столбцом 'ID' и используйте prop.table, чтобы получить процент

prop.table(table(cbind(ID = df1$ID, 
        value = is.na(unlist(df1[setdiff(names(df1), "ID")]))))
...