1

我已经使用该包haven将 SPSS 数据读入 R。一切似乎都很好,除了当我尝试对数据进行子集化时,它的行为似乎不正确。这是代码(我没有 SPSS 来创建示例数据并且不能发布真实的东西):

require(haven)
df <- read_spss("filename1.sav")
tmp <- df[as_factor(df$variable1) == "factor1",]
tmp <- tmp[!is.na(tmp$variable2), ]

上面的df有“NA”分散在各处。我希望上面只对数据进行子集化,只保留带有“factor1”的变量 1 的行,并丢弃变量 2 中所有带有 NA 的行。第一个子集按预期工作。但第二个子集没有。它删除了行,但 NA 仍然存在。

我怀疑这个问题与haven构建导入数据和使用类labelled而不是实际因子变量的方式有关,但它在我的脑海中。任何人都知道会发生什么以及如何完成同样的事情?

这是df,variable1和的结构variable2

> str(df)
'data.frame':   4573 obs. of  316 variables:

> str(df$variable1)
Class 'labelled'  atomic [1:4573] 9 9 9 14 8 8 2 4 8 16 ...
  ..- attr(*, "labels")= Named num [1:18] 1 2 3 4 5 6 7 8 9 10 ...
  .. ..- attr(*, "names")= chr [1:18] "factor1" "factor2" "factor3" "factor4" ...

> str(df$variable2)
Class 'labelled'  atomic [1:4573] 3 NA 3 NA 3 NA 1 1 NA NA ...
  ..- attr(*, "labels")= Named num [1:3] 1 2 3
  .. ..- attr(*, "names")= chr [1:3] "Sponsor" "Not a Sponsor" "Don't Know"
4

0 回答 0