将大量 .csv 文件转换为 SPSS 文件

Posted

技术标签:

【中文标题】将大量 .csv 文件转换为 SPSS 文件【英文标题】:converting mass .csv files into SPSS files 【发布时间】:2015-04-15 10:47:41 【问题描述】:

我进行了一些搜索,但仍未找到问题的答案。我有大量 .csv 文件,我想将它们转换为 SPSS 文件。假设我有 1000 个 .csv 文件,我想将它们全部放入 1000 个 SPSS 文件中。我可以通过要求 SPSS 从 .csv 读取数据来逐个文件地执行此操作,只需单击几下即可。但是,由于我有 1000 个文件,我正在寻找一种方法来做到这一点,而不必点击几千次并犯很多错误。一般来说,我对编程很陌生,所以我会很感激一些虚拟提示。非常感谢!

*更新: 我刚刚包含了一个示例 .csv 和 .sav 文件的链接。 csv file sav file 所有 .csv 文件都是一样的。它们是来自同一实验的数据,但来自不同的(人类)受试者。

【问题讨论】:

您是否尝试过通过图形用户界面导入一个简单的 CSV 文件并将其另存为 SPSS 文件(可能您的意思是 .SAV)并查看它?发布一个 CSV 和相应的 SPSS 文件怎么样? 嗨,马克,非常感谢您的回复。我想你说的正是我一直在做的。我基本上只是从 SPSS 打开 .csv 文件,单击“打开数据”,然后在“文本导入向导”中指定我希望数据如何在 SPSS 中,最后将其保存为 .sav 文件。是的,我确实是指 .sav 文件。对不起,我看了,但似乎不可能在 *** 上发布整个文件。还是您的意思是我应该将文件上传到某个地方(例如 Dropbox)然后发布链接? 您可以将几行简单的 CSV 粘贴到您的帖子中,是的。可能还有一个指向 .sav 版本的 Dropbox 文件的链接,是的。您可能会发现您现在有足够的积分来发布链接 ;-) 嗨,马克,感谢您的耐心等待。我刚刚编辑了帖子并包含了 2 个文件。它们应该包含相同的信息,只是它们具有不同的格式。 所有 csv 文件中的变量是相同的,还是不同的? 【参考方案1】:

您可以使用 SPSSINC PROCESS FILES 扩展命令对通配符或显式列表指定的大量文件迭代一组语法。您编写一个应该应用于每个输入的语法文件。在该文件中,您使用由 PROCESS FILES 定义的文件句柄或宏来打开文件。然后在其上运行任意语法,在您的情况下,使用输入宏来构建输出文件名并运行 SAVE 命令。

安装命令后,PROCESS FILES 将作为 Process Data Files 出现在 Utilities 菜单中。它需要 Python Essentials,并且是版本 23 的 Essentials 的一部分。对于 V22,您可以从 Utilities 菜单安装它;对于旧版本,您需要从 SPSS 社区网站 (www.ibm.com/developerworks/spssdevcentral) > Downloads for SPSS Statistics > Extension Commands 下载它并通过 Utilities 安装。

【讨论】:

我是这个论坛的新手,所以我从来不知道我的问题收到了这么多回复。非常感谢 JKP,我希望你能原谅我迟到的感谢!【参考方案2】:

如果您通过 SPSS 的菜单打开第一个 .csv 文件,您应该能够粘贴语法以手动打开 .csv 文件。在向导的第 6 步(共 6 步)中,它询问“您要粘贴语法吗”,为此选择“是”。这应该为您提供正确执行此操作的语法。 (我尝试使用上传的 .csv 文件,但由于变量的填写方式,我无法确定变量是否应该是字符串、数字等)。完成后,您可以添加语法以将打开的文件另存为 .sav。然后要将每个文件转换为 .sav,您需要做的就是更改数字。

SAVE OUTFILE='C:\filepath\84.sav'
/COMPRESSED.

可能有一种方法可以使用 DO REPEAT 循环自动运行该过程,但这应该作为实现自动化的起点。

【讨论】:

【参考方案3】:

我会用 python 模块和范围循环来摇滚它......这对我来说很有效,假设每个 .csv 文件都被命名为主题 1、主题 2 等,并且格式完全相同。另外,将驱动路径替换为正确的路径。

Begin Program.
import spss

for x in range (1, 1001):

   y = """GET DATA  /TYPE=TXT
     /FILE= 'C:\YOUR DRIVE PATH HERE\subject """ + str(x) + """.csv'
     /DELCASE=LINE
     /DELIMITERS=" ,"
     /QUALIFIER="'"
     /ARRANGEMENT=DELIMITED
     /FIRSTCASE=2
     /IMPORTCASE=ALL
     /VARIABLES=
     Age A3
     COL A4
     Clear A6
     CorrectAnswer A13
     Education A9
     Ethnicity A9
     Gender A6."""

   z = "save outfile = 'C:\YOUR DRIVE PATH HERE\subject " + str(x) + ".sav'."

   print y
   print z
   spss.Submit(y)
   spss.Submit(z)

End Program.

如果您是 python 新手,请务必注意预期的空白并包括其余变量,我将其留作空格。如果您收到错误消息,请使用 # 注释掉 spss.Submit() 命令(例如 #spss.Submit() )并检查 python 打印输出的字符串错误。希望对您有所帮助!

【讨论】:

我现在只看了你的回复,但我同时尝试学习一些 Python,这对我来说看起来很棒。谢谢蒂姆! 太棒了,感谢您的反馈! Python 完全改变了我使用 SPSS 的方式,现在没有它什么都做不了 :)

以上是关于将大量 .csv 文件转换为 SPSS 文件的主要内容,如果未能解决你的问题,请参考以下文章

csv转换obj

spss数据分析如何转换

csv文件怎么转换为Excel文件

使用 PHP 将 .xlsx 文件转换为 .csv 文件

如何批量将CSV格式的文件转化成excel格式

csv格式转换到excel(将大容量的csv文件转为xls)