使用dplyr::filter()删除NA观测值
我的数据如下所示:使用dplyr::filter()删除NA观测值,r,dplyr,tidyr,tidyverse,R,Dplyr,Tidyr,Tidyverse,我的数据如下所示: library(tidyverse) df <- tribble( ~a, ~b, ~c, 1, 2, 3, 1, NA, 3, NA, 2, 3 ) 或者删除单个列中的所有NA观察值(a): 为什么我不能使用常规的=过滤管 df %>% filter(a != NA) 为什么我们必须使用tidyr的特殊功能来删除NAs?来自@Ben Bolker: [T] his与dplyr::filter()没有特别的关系 来自@Ma
library(tidyverse)
df <- tribble(
~a, ~b, ~c,
1, 2, 3,
1, NA, 3,
NA, 2, 3
)
或者删除单个列中的所有NA
观察值(a
):
为什么我不能使用常规的=代码>过滤管
df %>% filter(a != NA)
为什么我们必须使用tidyr的特殊功能来删除NAs?来自@Ben Bolker:
[T] his与dplyr::filter()没有特别的关系
来自@Marat Talipov:
[A] ny与NA的比较,包括NA==NA,将返回NA
来自@farnsy的作者:
==运算符没有像您期望的那样处理NA
把NA想象成“我不知道那里有什么”。正确答案
to 3>NA显然是NA,因为我们不知道缺失的值
是否大于3。嗯,NA==NA也是一样的。他们是
这两个都缺少值,但实际值可能会大不相同,因此
正确的答案是“我不知道。”
R不知道你在分析中做了什么,所以
可能会引入以后会被发布的bug
令人尴尬的是,它不允许比较运算符认为NA
是一种价值
例如:
您可以使用:
df %>% filter(!is.na(a))
要删除a列中的NA。如果2020年有人在这里,在制作完所有管道后,如果u管道%%>%NA。排除将删除管道中的所有NAs 价格!=“NA”
应该有效,因为任何与NA
的比较,包括NA==NA
,都会返回NA
@指标:这很奇怪(对我来说)有效。你能解释一下为什么会这样吗?顺便说一下,这与dplyr/filter
@user3731467没有diamonds
数据,但在一个示例数据中,Metrics Worked的建议确实回答了标题问题:如何使用dplyr::filter()删除na观测值.我在2021年来到这里,非常感谢你的建议!
df %>% filter(a != NA)
df %>% filter(!is.na(a))