【发布时间】:2020-07-06 23:13:23
【问题描述】:
我想在因子水平上对数据框进行子集化,但是当存在 NAs 时很难这样做。这是两个比较数据框,一个在因子列中没有NA,一个带有NA:
df1 <- data.frame(v = c("ABC", "def", "ABC", "ghi"),
f = c(4.11, 3.22, NA, 7.44))
df2 <- data.frame(v = c(NA, "ABC", "def", "ABC", "ghi"),
f = c(2.33, 4.11, 3.22, NA, 7.44))
在df1 中,因子水平的子集效果很好。例如:
df1[!df1$v == "ABC",]
v f
2 def 3.22
4 ghi 7.44
相比之下,df2 中的子集充满了问题:
df2[!df2$v == "ABC",]
v f
NA <NA> NA
3 def 3.22
5 ghi 7.44
问题是双重的:(i)df2$v 中带有<NA> 的行被包括在内,而它不应该被包括在内;(ii)它旁边的值(即df2$f 下同一行上的值)是NA,而该值应该是2.33。
我怎样才能干净而正确地对df2 进行子集化,结果是这样的:
v f
3 def 3.22
5 ghi 7.44
【问题讨论】: