Мне не удалось найти подобного вопроса, хотя я сомневаюсь, что он не был опубликован ранее.Мой вопрос связан с Рассчитать, используя dplyr, процент NA'S в каждом столбце .
В наборе данных с несколькими наблюдениями на одного субъекта полезно не только рассчитать общее количествоколичество пропущенных записей данных (т.е. общее количество NA на столбец), но также сколько субъектов имеют пропущенные данные какого-либо рода.
Например, в наборе данных db
(см. ниже) item_1
отсутствует для 2 предметов, а item_2
отсутствует для 1 предмета.
Редактировать 1: Что меня интересует, так это то, сколько предметов имеют (любой) пропущенное значение навещь.Даже если в item_2
есть два пропущенных наблюдения для субъекта № 1, его следует считать равным 1, поскольку это все тот же субъект.
library("dplyr")
db <- data.frame(
subject = c(1, 1, 1, 2),
item_1 = c(NA, 2, 3, NA),
item_2 = c(1, NA, NA, 4)
)
db
#> subject item_1 item_2
#> 1 1 NA 1
#> 2 1 2 NA
#> 3 1 3 NA
#> 4 2 NA 4
До сих пор я подходил к cbind
все отдельные вычисления в одном новом data.frame
, но это быстро становится беспорядочным (с большим количеством столбцов) и, конечно, плохо кодируется.
Edit 1 : Тем не менее, это показываеттребуемые значения, так как item_1
отсутствует для двух предметов (1 и 2), а item_2 отсутствует только для 1 предмета (субъект 2).
cbind(
db %>%
filter(is.na(item_1)) %>%
summarise(na_item_1 = n_distinct(subject)),
db %>%
filter(is.na(item_2)) %>%
summarise(na_item_2 = n_distinct(subject))
)
#> na_item_1 na_item_2
#> 1 2 1
Вопрос : есть ли в dplyr
подход для расчета этого?
В идеале, я также хотел бы добавить долю пропусков где-то (как в примере ниже):
data.frame(
type = c("n", "proportion"),
na_item_1 = c(2, 1.0),
na_item_2 = c(1, 0.5)
)
#> type na_item_1 na_item_2
#> 1 n 2.0 1.0
#> 2 proportion 1.0 0.5
Создано в 2019-04-16 пакетом Представить (v0.2.1)
Заранее спасибо!