首页 > 解决方案 > 使用 R 的 Haven 包正确处理导入到 R 的 SPSS .sav 文件中的 NA 值

问题描述

我的平台是Windows 10

.sav文件中的数据如下所示(截图来自PSPPnot 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

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

谢谢。

标签: rr-haven

解决方案


因为您将数据框/小标题传递给mean函数,mean所以函数与向量一起使用。

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

您可以将数据框传递给colMeans函数,该函数将返回数据框中所有列的列平均值。

colMeans(spss2, na.rm = TRUE)

#Points 
#   5.5 

推荐阅读