【发布时间】:2018-03-06 20:08:39
【问题描述】:
如果您有一个 data.frame 的因子不包括 NAs 作为级别,您可以毫无问题地过滤您的数据。
set.seed(123)
df=data.frame(a = factor(as.character(c(1, 1, 2, 2, 3, NA,3,NA)),exclude=NULL),
b= runif(8))
#str(df)
df[df$a==3,]
# a b
# 5 3 0.9404673
# 7 3 0.5281055
如果您需要按 NA 级别过滤,则会出现这些问题。以下方法不起作用:
df[df$a==NA,]
df[df$a=="NA",]
df[is.na(df$a),]
我发现的唯一方法是将因子转换为数字并将其与级别数进行比较。
df[as.numeric(df$a)==4,]
# a b
#6 <NA> 0.0455565
#8 <NA> 0.8924190
还有其他更直观/优雅的方式来获得相同的结果吗?
【问题讨论】:
-
好吧,
df[df$a == factor(NA, levels=levels(df$a), exclude = NULL), ]