Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr::filter()删除NA观测值_R_Dplyr_Tidyr_Tidyverse - Fatal编程技术网

使用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))