Tidyverse решение для подсчета нулей из нескольких полей - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь суммировать свои данные путем подсчета количества нулей и количества ответов (значения + NA) для 12 различных столбцов. (переименован для этого примера)

Данные:

my_df <- structure(list(SCR1 = c(100, 80.2, 70.3, 
90.1, 100, 100, 100, 100, 40.6, 80.2, 80.2, 90.1, 30.7, 100, 
80.2), SCR2 = c(75.25, 75.25, 75.25, 75.25, 75.25, 75.25, 
100, 100, 50.5, 50.5, 75.25, 50.5, 50.5, 100, 50.5), SCR3 = c(100, 
100, 100, 100, 75.25, 75.25, 100, 100, 100, 75.25, 100, 100, 
NA, 100, 75.25), SCR4 = c(100, 50.5, 
50.5, 75.25, 100, 75.25, 100, 100, 100, 75.25, 50.5, 100, 100, 
100, 75.25), SCR5 = c(100, 75.25, 50.5, 
75.25, 100, 75.25, 100, 100, 50.5, 75.25, 75.25, 75.25, 25.75, 
100, 75.25), SCR6 = c(100, 25.75, 50.5, 
75.25, 100, 75.25, 100, 100, 75.25, 75.25, 75.25, 100, 50.5, 
100, 50.5), SCR7 = c(75.25, 50.5, 75.25, 
100, 50.5, 75.25, 100, 100, 75.25, 50.5, 75.25, 100, 25.75, 100, 
75.25), SCR8 = c(75.25, 75.25, 50.5, 75.25, 
75.25, 75.25, 100, 100, 75.25, 75.25, 75.25, 75.25, 50.5, 100, 
75.25), SCR9 = c(50.5, NA, NA, 25.75, 100, NA, 
NA, NA, 100, NA, NA, NA, 75.25, NA, NA), SCR10 = c(25.75, 
NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, NA, NA, NA, NA), SCR11 = c(100, 
75.25, 50.5, 75.25, 100, 75.25, 100, 100, 75.25, 75.25, 75.25, 
100, 50.5, 100, 50.5), SCR12 = c(75.25, 75.25, 
50.5, NA, 75.25, 75.25, 100, 100, 75.25, NA, 75.25, 75.25, 50.5, 
100, 50.5), ID = 1:15), row.names = c(NA, 15L), class = "data.frame")

Здесь я хотел бы вернуть количество значений и число NA, а затем проценты NA

Я нашел решение для подсчета числа NA, но я изо всех сил пытаюсь добавить 2-й / 3-й столбец с количеством и процентами.

my_df %>% map_df(function(x) sum(is.na(x))) %>% gather(feature, num_nulls) %>% dplyr::arrange(desc(num_nulls))

Как я могу добавить количество и процент на? Я пытаюсь использовать Tidyverse и избегать использования SQL.

1 Ответ

0 голосов
/ 28 августа 2018

Вы почти у цели. Два дополнительных столбца могут быть созданы с помощью дополнительного оператора mutate:

my_df %>%
    map_df(function(x) sum(is.na(x))) %>%
    gather(feature, num_nulls) %>%
    dplyr::arrange(desc(num_nulls)) %>%
    mutate(num_responses = nrow(my_df) - num_nulls,
        percent = num_responses/nrow(my_df))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...