使用包避免导入导入到r的SPSS数据?

时间:2016-07-15 19:48:39

标签: r subset r-haven

我已经使用包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”的variable1行,并丢弃变量2中带有NA的所有行。第一个子集按预期工作。但第二个子集没有。它会删除行,但NAs仍然存在。

我怀疑这个问题与haven构造导入数据的方式有关,并使用类labelled而不是实际的因子变量,但它超出了我的想象。任何人都知道会发生什么以及如何实现同样的目标?

以下是dfvariable1variable2的结构:

> 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"

0 个答案:

没有答案