使用 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
我的平台是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