将大量 .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 文件的主要内容,如果未能解决你的问题,请参考以下文章