mutate cheatsheet and r dplyr tidyr tidyverse

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.