[英]Removing NA observations with dplyr::filter()
我的數據如下所示:
library(tidyverse)
df <- tribble(
~a, ~b, ~c,
1, 2, 3,
1, NA, 3,
NA, 2, 3
)
我可以使用drop_na()
刪除所有NA
觀察:
df %>% drop_na()
或刪除所有NA
觀測在單個列( a
為例):
df %>% drop_na(a)
為什么我不能只使用普通的!=
過濾器管道?
df %>% filter(a != NA)
為什么我們必須使用 tidyr 的特殊函數來刪除 NAs?
例如:
您可以使用:
df %>% filter(!is.na(a))
刪除 a 列中的 NA。
來自@Ben Bolker:
[T]他與 dplyr::filter() 沒有特別的關系
來自@Marat Talipov:
[A]任何與NA的比較,包括NA==NA,都會返回NA
來自@farnsy 的相關回答:
== 運算符不會像您期望的那樣處理 NA。
將 NA 視為“我不知道那里有什么”的意思。 3 > NA 的正確答案顯然是 NA,因為我們不知道缺失值是否大於 3。 嗯,對於 NA == NA 也是一樣。 它們都是缺失值,但真實值可能大不相同,因此正確答案是“我不知道”。
R 不知道您在分析中正在做什么,因此與其潛在地引入后來最終會發布讓您尷尬的錯誤,不如讓比較運算符認為 NA 是一個值。
如果 2020 年有人在這里,在制作完所有管道后,如果 u pipe %>% na.exclude
將帶走管道中的所有 NA!
我總是使用它,它運行良好
cool$day[cool$day==''] <- NA
cool$day[is.na(cool$day)] <- "NA"
酷 <- 酷[!cool$day == "NA", ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.