【问题标题】:spss.system.file in package memisc add extra empty columns when importing string variables导入字符串变量时,memisc 包中的 spss.system.file 添加额外的空列
【发布时间】:2014-12-30 20:54:58
【问题描述】:

我之前在memisc 包中使用过spss.system.file 函数几次,它总是可以正常工作。但是,最近我尝试导入几个包含字符串变量的 SPSS 文件。似乎每当我使用spss.system.file 导入这些变量时,都会导致额外的 6 列空白空间。例如,如果以下字符向量是 SPSS 中名为 Age 的字符串变量:

Age <- c("18 years old", "18 years old", "24", "19 years old", "18", "18")

使用spss.system.file 将其读入R 将产生一个R data.frame(从data.set 转换后)和一个包含实际数据的Age 变量(属于factor 类),然后是Age0 , Age1, ... Age6 - 所有类 factor,但全部为空。

有没有人对这个问题有任何经验或知道是什么原因造成的?我知道可能将 SPSS 文件转换为 portable 文件可能会使读取效果更好,但这需要安装 SPSS。

【问题讨论】:

  • 我在 Hmisc 中使用 spss.get 也是如此。不知道是什么原因造成的,虽然
  • 更新:我现在有点想法了,看看下面的答案

标签: r import spss


【解决方案1】:

您可以尝试使用 sjPlot 包来读取 .sav 文件,看看是否会遇到同样的错误吗?

install.packages("sjPlot"); library(sjPlot)
df <- sji.SPSS(...)
sji.viewSPSS(df)

?

【讨论】:

    【解决方案2】:

    您可以使用外部包中的 read.spss 函数并将其设置为 .data.frame=TRUE 和 stringAsFactors=FALSE。 sji.viewSPSS 函数不会阻止将字符串转换为因子,我可能会更改它或为此功能添加至少一个选项。

    编辑,由于新的软件包开发 你现在也可以试试haven-package(现在也在 CRAN 上)或the updated sjPlot package,它也使用了 Haven 的读取功能。

    【讨论】:

      【解决方案3】:

      好的,这对我有用,但我不明白为什么。答案是:在您的 spss 文件(变量视图)中,将字符串变量的宽度更改为更短的值。究竟有多短是不够清楚,它甚至似乎在变量之间变化(?!)但是当没有真正宽的字符串变量时,额外的空列也会消失。 (作为奖励,我们在一定程度上限制了因子级别中尾随空格的数量)

      【讨论】:

      • 只是其他可能对有更多理解的人有用的东西:我从来没有设法在没有收到(看似无辜的)“系统文件中遇到无法识别的记录类型 7,子类型 18”警告的情况下导入 spss 文件。但是,在对我造成上述问题的文件中(不是 OP 的示例)还有另外两个类似的警告:记录类型 7 子类型 14 和记录类型 7 子类型 21。现在是有趣的部分:在我缩短了所有字符串之后spss中的变量不仅问题消失了,而且子类型14的警告也消失了。 (另外两个还在。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 2019-12-20
      相关资源
      最近更新 更多