Подсчет NA сгруппирован по фактору - PullRequest
0 голосов
/ 29 апреля 2020

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

enter image description here

Глядя на данные, я хотел бы получить что-то вроде:

mpg          count(NA_in_column_carb)
21.0         0
21.4         0
17.3         0

В терминах SQL я хотел бы сначала сгруппировать данные по mpg (в данном случае будет учитываться значение mpg), а затем посчитать количество NA значений, отображаемых для каждой группы. в столбце carb.

Я попытался написать что-то, используя dplyr, но застрял, поскольку это не дает правильного результата, а скорее выдает ошибку.

Код:

mtcars %>% group_by(mpg, carb) %>% select(mpg, n = n(is.na(carb)))

Ошибка:

Error in n(is.na(carb)) : unused argument (is.na(carb))

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Можно sum с is.na:

library(dplyr)
mtcars %>% group_by(mpg) %>% summarise(n = sum(is.na(carb)))

Эквивалент в базе R

  1. aggregate

    aggregate(carb~mpg, mtcars, function(x) sum(is.na(x)))
    
  2. tapply

    tapply(mtcars$carb, mtcars$mpg, function(x) sum(is.na(x)))
    

и data.table

library(data.table)
setDT(mtcars)[, .(sum = sum(is.na(carb))), mpg]
0 голосов
/ 30 апреля 2020

Мы можем использовать rowsum в base R

rowsum(+(is.na(mtcars$carb)), mtcars$mpg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...