Как сохранить все строки всех столбцов, которые имеют NA - PullRequest
0 голосов
/ 08 мая 2018

Есть идеи о том, как применить функцию к фрейму данных с использованием dplyr таким образом, чтобы я оставлял только строки, у которых есть пропущенные значения?

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Используя образцы данных @ DJack здесь , мы можем сделать это в dplyr, используя filter_all. filter_all принимает аргумент, заключенный в all_vars или any_vars, и применяет его ко всем столбцам. Здесь мы сохраняем любую строку, которая возвращает TRUE для is.na в любом столбце.

m <- matrix(1:25, ncol = 5)
m[c(1, 6, 13, 25)] <- NA
df <- data.frame(m)
library(dplyr)
df %>%
  filter_all(any_vars(is.na(.)))
#>   X1 X2 X3 X4 X5
#> 1 NA NA 11 16 21
#> 2  3  8 NA 18 23
#> 3  5 10 15 20 NA

Создано в 2018-05-08 пакетом представ. (v0.2.0).

0 голосов
/ 08 мая 2018

Я не знаю, как решить эту проблему с помощью dplyr, но, возможно, это поможет:

Сначала я создал этот df:

df <- tribble( ~a ,  ~b, ~c,
               1  , NA ,  0,
               2  ,  0 ,  1,
               3  ,  1 ,  NA,
               4  ,  1 ,  0
             )

Затем будут возвращены только строки с NA:

df[!complete.cases(df),]

Подробнее: Подмножество строк, содержащих NA (отсутствующие) значения в выбранном столбце фрейма данных

0 голосов
/ 08 мая 2018

Вот (не dplyr) решение:

df[rowSums(is.na(df)) > 0,]

#  X1 X2 X3 X4 X5
#1 NA NA 11 16 21
#3  3  8 NA 18 23
#5  5 10 15 20 NA

Или как предложено MrFlick:

df[!complete.cases(df),]

Пример данных

m <- matrix(1:25, ncol = 5)
m[c(1,6,13,25)] <- NA
df <- data.frame(m)
df

#  X1 X2 X3 X4 X5
#1 NA NA 11 16 21
#2  2  7 12 17 22
#3  3  8 NA 18 23
#4  4  9 14 19 24
#5  5 10 15 20 NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...