关于 r:如何将数据集导出到 SPSS? 您所在的位置:网站首页 R语言怎么保存数据集 关于 r:如何将数据集导出到 SPSS?

关于 r:如何将数据集导出到 SPSS?

2024-07-16 11:38| 来源: 网络整理| 查看: 265

我想将 MASS 包中的数据集导出到 SPSS 以进行进一步调查。我正在寻找包中的 EuStockMarkets 数据集。

如 http://www.statmethods.net/input/exportingdata.html 中所述,我做了:

12library(foreign) write.foreign(EuStockMarkets,"c:/mydata.txt","c:/mydata.sps",   package="SPSS")

我有一个文本文件,但 sps 文件不是有效的 SPSS 文件。我真的在寻找一种将数据集导出到 SPSS 可以打开的东西的方法。

相关讨论 为什么不导出为常规 csv? R 在"进一步调查"数据方面效率如何? :) 这也有效。我以为我可以按照链接中的说明直接导出到 SPSS。否则我对 CSV 没问题。这本书声称这是可能的,所以我试了一下。 也许您的 SPSS 版本与 foreign 生成的文件类型不兼容?如果 SPSS 类似于 Word 或 Excel,则兼容性可能会误入歧途并很快崩溃。 那么,我不知道该文件使用哪个 SPSS 版本。 难道您不想获得一个 .sav 文件以在 SPSS 中使用它吗? 当然是。所以我认为导出的文件是一个 .sav 文件,只是被重命名为其他文件。但我查了一下,它根本不是一个sav文件。 是的,write.foreign 不会生成 .sav 文件。如果您阅读文档,它会以自由格式文本写入数据,然后您的 mydata.txt 文件应该是 SPSS 语法,以便将该文件读入 SPSS。出于这个原因,直接将 CSV 加载到 SPSS 中可能同样简单。或者,如果您需要 .sav,则从 R 中取出 .Rdata 文件并使用其他工具(如 Stat/Transfer)进行文件转换。 您的评论应该是一个答案。如果你这样做,我会接受的。 从程序员的angular来看,使用 CSV/SPS 解决方法比编写原生 SPSS 格式要容易得多。然而,foreign:write.foreign() 有一些严重的问题,请参阅 stackoverflow.com/questions/40022111/... R 在 SPSS 上没有很好的支持

正如 Thomas 在评论中提到的,write.foreign 不会生成本机 SPSS 数据文件 (.sav)。它生成的是逗号分隔格式的数据(.txt 文件)和用于将该数据读入 SPSS 的基本语法文件(.sps 文件)。 EuStockMarkets 数据对象类是多变量时间序列 (mts),因此当您尝试在 SPSS 中运行它时,元数据会丢失,并且生成的 .sps 文件缺少变量名称会引发错误。要解决此问题,您可以将其导出为数据框:

1write.foreign(as.data.frame(EuStockMarkets),"c:/mydata.txt","c:/mydata.sps", package="SPSS")

现在您只需在 SPSS 中将 mydata.sps 作为语法文件(而不是数据文件)打开并运行它以读取数据文件。

我不想回答已经回答的问题。我只是认为对于寻找此功能的其他用户,还有其他东西可以补充。

在您的 SPSS 窗口中,您只需找到第一行代码并进行编辑。它应该是这样的: "文件名.txt"

您需要找到保存文件的文件夹路径: "C:\\\\\\\\Users\\\\\\\\DELL\\\\\\\\Google Drive\\\\\\\\Folder-With-Your-File"

然后您只需将此路径添加到您的文件名中: "C:\\\\\\\\Users\\\\\\\\DELL\\\\\\\\Google Drive\\\\\\\\Folder-With-Your-File\\\\\\\\file-name.txt"

否则 SPSS 将无法识别 .txt 文件。

对不起,如果我在这里重复一些信息,我只是想让它更容易理解。

不要导出它,而是使用 STATS GET R 扩展命令。它将从 R 工作区/数据集中获取指定的数据框并将其转换为统计数据集。您需要 R Essentials for Statistics 和扩展命令,它们可通过 SPSS 社区站点 (www.ibm.com/developerworks/spssdevcentral)

获得

我认为 EuStockMarkets 是一个(标记的)数据框。 这应该可以工作,甚至可以保留变量和值标签:

12require(sjlabelled) write_spss(EuStockMarkets,"mydata.sav")

或者你试试 rio:

1rio::export(EuStockMarkets,"mydata.sav")


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有