Нахождение NA по обеим переменным в R - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу найти число значений NA с помощью функции count() в двух векторах одинаковой длины одновременно:

library(tidyverse)
list1 <-c(NA,NA,3)
list2 <-c(NA,3,4)
count(is.na(list1) & is.na(list2)) # wanna get TRUE 1 FALSE 2 as one only string contains NA values in both variables

Не работает.Существует следующая ошибка:

  Error in UseMethod("groups") : 
  no applicable method for 'groups' applied to an object of class "logical"

Однако я сделал это до того, как выучил одну неплохую книгу.

library(nycflights13) #data-set
flights %>%
count(is.na(arr_delay) & is.na(dep_delay))

Вот это работает.Кажется, некоторая проблема связана с преобразованием вектора определенного типа в логический (T или F), но я не могу понять, что именно.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Похоже, что и plyr, и dplyr имеют функцию count().Версия plyr в основном говорит, что это просто оболочка для as.data.frame(table(x)), в то время как dplyr выглядит так, как будто она ожидает tbl() в качестве ввода.Похоже, что dplyr::count() - это то, что вы использовали выше.

Я бы просто использовал table() здесь или явно позвонил бы plyr::count():

library(tidyverse)
list1 <-c(NA,NA,3)
list2 <-c(NA,3,4)
as.data.frame(table(is.na(list1) & is.na(list2)))
#>    Var1 Freq
#> 1 FALSE    2
#> 2  TRUE    1
plyr::count(is.na(list1) & is.na(list2))
#>       x freq
#> 1 FALSE    2
#> 2  TRUE    1
dplyr::count(is.na(list1) & is.na(list2))
#> Error in UseMethod("groups"): no applicable method for 'groups' applied to an object of class "logical"

Создано в 2019-02-10 представьте пакет (v0.2.1)

0 голосов
/ 11 февраля 2019

Вы можете использовать table(), который строит таблицу сопряженности из подсчетов для каждого логического значения в is.na(list1) & is.na(list2):

table(is.na(list1) & is.na(list2))
# FALSE  TRUE 
#     2     1 
...