【问题标题】:correctly treating NA values in SPSS .sav file imported into R using R's Haven package使用 R 的 Haven 包正确处理导入到 R 的 SPSS .sav 文件中的 NA 值
【发布时间】:2021-07-05 21:41:09
【问题描述】:

我的平台是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 命令不起作用?

谢谢。

【问题讨论】:

    标签: r r-haven


    【解决方案1】:

    因为您将数据帧/tibble 传递给mean 函数,所以mean 函数与向量一起使用。

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

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

    colMeans(spss2, na.rm = TRUE)
    
    #Points 
    #   5.5 
    

    【讨论】:

    • 谢谢罗纳克!我希望错误消息提供更多信息。只要 StackOverflow 允许,我就会将你的答案标记为正确(我的问题已经过去了没有足够的时间)。最好的。
    猜你喜欢
    • 2018-07-26
    • 2021-08-30
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2018-04-21
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多