gpt4 book ai didi

r - dplyr::filter 在过滤不等于值时删除 NA

转载 作者:行者123 更新时间:2023-12-01 01:47:59 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why does dplyr's filter drop NA values from a factor variable?

(3 个回答)


3年前关闭。




这是 filter 的预期行为吗?在 dplyr ?听起来很可怕。我是否遗漏了什么,或者版本错误?

mydf <- data.frame(x = 1:5, y = c(letters[1:3], rep(NA, 2)))
mydf
x y
1 1 a
2 2 b
3 3 c
4 4 <NA>
5 5 <NA>

filter(mydf, y != 'a')
x y
1 2 b
2 3 c

packageVersion('dplyr')
[1] ‘0.7.2’

最佳答案

它就在 ?dplyr 的文档中(虽然这似乎只是添加到文档 9 months ago ):

Use filter() find rows/cases where conditions are true. Unlike base subsetting, rows where the condition evaluates to NA are dropped.



这与 base::subset()的方式一致有效,但不是如何使用 [ 进行子集化+逻辑索引工作。

正如@akrun 在评论中所说,您可以使用 filter(mydf, y != 'a' |is.na(y))保存 NA值。如果能够使用 identical() 就好了或 isTRUE() ,但这些不是矢量化的。您可以编写一个方便的包装器:
eq <- function(x,c) {x==c | is.na(x)}
filter(mydf,eq(y,"a"))

关于r - dplyr::filter 在过滤不等于值时删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47163569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com