使用 R 的 Haven 包正确处理导入 R 的 SPSS .sav 文件中的 NA 值

correctly treating NA values in SPSS .sav file imported into R using R's Haven package

我的平台是Windows 10

我的 .sav 文件中的数据如下所示(屏幕截图来自 PSPP 而不是 SPSS):

数据视图:

变量视图:

我正在使用 haven.sav 文件导入 R:

library("tidyverse")
library("haven")

haven 命令(我的 .sav 文件名是 spss_missing99.sav):

> spss2 <- read_sav("C:/.../spss_missing99.sav")
> spss2

# A tibble: 11 x 1
   Points
    <dbl>
 1      1
 2      2
 3      3
 4      4
 5      5
 6      6
 7      7
 8      8
 9      9
10     10
11     NA


> is.na(spss2)

      Points
 [1,]  FALSE
 [2,]  FALSE
 [3,]  FALSE
 [4,]  FALSE
 [5,]  FALSE
 [6,]  FALSE
 [7,]  FALSE
 [8,]  FALSE
 [9,]  FALSE
[10,]  FALSE
[11,]   TRUE

> mean(spss2)

[1] NA
Warning message:
In mean.default(spss2) : argument is not numeric or logical: returning NA


> mean(spss2, na.rm = TRUE)

[1] NA
Warning message:
In mean.default(spss2, na.rm = TRUE) :
  argument is not numeric or logical: returning NA

我的问题:为什么最后 2 个 mean 命令不起作用?

谢谢。

因为您将 dataframe/tibble 传递给 mean 函数,所以 mean 函数使用向量。

mean(spss2$Points, na.rm = TRUE)
#[1] 5.5

您可以将数据帧传递给 colMeans 函数,该函数将 return 数据帧中所有列的列均值。

colMeans(spss2, na.rm = TRUE)

#Points 
#   5.5