是否可以避免在 SPSS 语法中硬编码文件位置



我正在使用 SPSS 25 语法来打开和处理一组数据文件。我希望这些语法文件尽可能便携。出于这个原因,我希望用户能够在运行时选择文件位置,而无需重新编码语法本身。

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

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

GET
  FILE='C:Usersxkcdstudiesprojectrawdata'+
    'reallyrawveryraw.sav'
    PASSWORD='CorrectHorseBatteryStaple'.
DATASET NAME Demo WINDOW=FRONT.

在 R 中,我会这样做:

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

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

我可以使用 FILE HANDLE,以便用户只需要硬编码几个文件夹位置,但这不太理想 - 我真的宁愿用户根本不编辑语法。

提前感谢!

跟进全自动过程的想法 - 假设您需要运行代码的特定文件名,并且您正在搜索的文件夹中仅存在一个副本,则以下代码将起作用。这可以直接在驱动器C:上运行,但如果可以缩小路径范围,则运行所需的时间要少得多:

* this will create a text file that has the path of the required file.
HOST COMMAND=['dir /s /b "C:Userssomename*required file name.sav" > C:Userssomenametempname.sps'].
* now to read the name and put in in a handle.
DATA LIST file = "C:Userssomenametempname.sps" fixed / pth 1-500 (a).
exe.
string cmd(a500).
compute cmd=concat("file handle myfile / name='", rtrim(pth), "'.").
write out="C:Userssomenametempname.sps" /cmd.
exe.
* inserting the new syntax will activate the handle.
insert file = "C:Userssomenametempname.sps".

现在,您可以在语法中使用句柄myfile,例如:

get file=myfile.

最新更新