我可以避免使用SPSS语法对文件位置进行硬编码吗?

时间:2019-04-29 14:56:16

标签: spss

我正在使用SPSS 25语法来打开和处理一组数据文件。我希望这些语法文件尽可能地可移植。因此,我希望用户能够在运行时选择文件位置,而不必重新编码语法本身。

我正在运行Windows 10,尽管希望没关系。我确实有SPSS的Python插件,尽管理想情况下这将是基本的SPSS语法解决方案。

现在在SPSS中,我正在这样做:

GET
  FILE='C:\Users\xkcd\studies\project\rawdata'+
    '\reallyraw\veryraw.sav'
    PASSWORD='CorrectHorseBatteryStaple'.
DATASET NAME Demo WINDOW=FRONT.

在R中,我会这样做:

message("Where is the veryraw.sav file?")
demo<-fread(file.choose())

理想情况下,用户将在运行时一次选择一个文件。 不太理想的是,用户将选择一个文件夹,其中包含所有已知名称的文件。

我可以使用FILE HANDLE来使用户仅需对几个文件夹位置进行硬编码,但这并不理想-我真的希望用户根本不编辑语法。

谢谢!

1 个答案:

答案 0 :(得分:1)

遵循全自动过程的想法-假设需要运行特定的文件名,并且要搜索的文件夹中只有一个副本,以下代码将起作用。这是可能,可以直接在驱动器JSON上运行,但是如果您缩小路径范围,将花费更少的时间:

C:

现在您可以在语法中使用句柄* this will create a text file that has the path of the required file. HOST COMMAND=['dir /s /b "C:\Users\somename\*required file name.sav" > C:\Users\somename\tempname.sps']. * now to read the name and put in in a handle. DATA LIST file = "C:\Users\somename\tempname.sps" fixed / pth 1-500 (a). exe. string cmd(a500). compute cmd=concat("file handle myfile / name='", rtrim(pth), "'."). write out="C:\Users\somename\tempname.sps" /cmd. exe. * inserting the new syntax will activate the handle. insert file = "C:\Users\somename\tempname.sps". ,例如:

myfile