cheatsheet - Eliminando las observaciones de NA con dplyr:: filter()
group by in r (2)
Mis datos se ven así:
library(tidyverse)
df <- tribble(
~a, ~b, ~c,
1, 2, 3,
1, NA, 3,
NA, 2, 3
)
Puedo eliminar todas las observaciones de NA
con drop_na()
:
df %>% drop_na()
O elimine todas las observaciones de NA
en una sola columna (por ejemplo, a):
df %>% drop_na(a)
¿Por qué no puedo usar un tubo de filtro normal?
df %>% filter(a != NA)
¿Por qué tenemos que usar una función especial de tidyr para eliminar las AN?
De @Ben Bolker:
[T] his no tiene nada que ver específicamente con dplyr :: filter ()
Desde @Marat Talipov:
[A] ny comparación con NA, incluyendo NA == NA, devolverá NA
De una respuesta relacionada por @farnsy:
El operador == no trata las NA como usted esperaría.
Piense en NA como "no sé lo que hay". La respuesta correcta a 3> NA es obviamente NA porque no sabemos si el valor faltante es mayor que 3 o no. Bueno, es lo mismo para NA == NA. Ambos son valores faltantes, pero los valores verdaderos podrían ser bastante diferentes, por lo que la respuesta correcta es "No sé".
R no sabe lo que está haciendo en su análisis, por lo que, en lugar de presentar posibles errores que luego se publicarán y avergonzarlo, no permite a los operadores de comparación pensar que NA es un valor.
Por ejemplo:
puedes usar:
df %>% filter(!is.na(a))
para eliminar la AN en la columna a.