r、 不等于,不包括nas
我正在尝试筛选数据以忽略某些值。问题是我想包括NAs。当我使用不等于“!=”运算符时,NAs也会被删除r、 不等于,不包括nas,r,dplyr,R,Dplyr,我正在尝试筛选数据以忽略某些值。问题是我想包括NAs。当我使用不等于“!=”运算符时,NAs也会被删除 a= c("A","C","B",NA,"C","A",NA,"B","A") df = data.frame(a) df2 <- df %>% filter(a != "B") df2 a=c(“a”、“c”、“B”、NA、“c”、“a”、NA、“B”、“a”) df=数据帧(a) df2% 过滤器(a!=“B”) df2 例如
a= c("A","C","B",NA,"C","A",NA,"B","A")
df = data.frame(a)
df2 <- df %>%
filter(a != "B")
df2
a=c(“a”、“c”、“B”、NA、“c”、“a”、NA、“B”、“a”)
df=数据帧(a)
df2%
过滤器(a!=“B”)
df2
例如,我希望df2包含不等于B(A和C)和NA的所有内容,而不仅仅是A和C。
NA
永远不等于任何内容
NA == NA # NA, not TRUE
@bouncyball是推荐的解决方案,如果您想检查两个值或变量是否确实相同,可以使用相同的
:
df %>% filter(!sapply(a, identical, "B"))
或使用库purrr
df %>% filter(!map_lgl(a, identical, "B"))
我们可以在
filter
函数中包含另一个条件,它将保持NA
值:
df %>%
filter(a != "B" | is.na(a))
# a
# 1 A
# 2 C
# 3 <NA>
# 4 C
# 5 A
# 6 <NA>
# 7 A
df%>%
过滤器(a!=“B”|是.na(a))
#a
#1A
#2 C
# 3
#4 C
#5 A
# 6
#7 A
从
逻辑计算将NA
视为缺少的“真/假值…”
还有更多的解释,但您可以查阅帮助文件。Thank you@bouncyball-是否因为NAs在R中被视为特殊值而被忽略,并且在使用时总是注册为false!=?使用
时,它们始终被视为NA
=代码>。您可以自己测试,例如,1!=NA
或查看?NA
上的帮助。谢谢@Gregor。这是有道理的。那个!=仅保留“TRUE”值,但NAs显示为NA并将被删除。@BounchBall-如果您想将您的评论作为答案,我会选择它作为正确答案。谢谢NA
可能被解释为类似,其中NA
意味着实际值可能是任何东西,但由于潜在的问题(例如,因子
级别不足,缺少集合成员资格)而不清楚。用这个c(“A”,NA,“B”)
可以表示“任何字母”。使用a!=“B”
给出一个逻辑的NA
,因为a
是NA
,它可能是“B”
(意思是假
)或其他东西(意思是真
)。也许我想得太多了,但对我来说,NA
意味着“可能是任何合法的价值观”。谢谢你提供这些额外的信息。bouncyball的解决方案最适合当前的需要,但这将在将来非常有用。