Можно ли избежать жесткого определения местоположения файлов в синтаксисе SPSS? - PullRequest
2 голосов
/ 29 апреля 2019

Я использую синтаксис SPSS 25 для открытия и обработки набора файлов данных.Я хотел бы, чтобы эти файлы синтаксиса были максимально переносимыми.По этой причине я хочу, чтобы пользователь мог выбирать расположение файлов во время выполнения без необходимости перекодировать сам синтаксис.

Я использую Windows 10, хотя, надеюсь, это не имеет значения.У меня есть плагин Python для SPSS, хотя в идеале это будет базовое синтаксическое решение 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 Ответ

1 голос
/ 30 апреля 2019

Следуя идее полностью автоматизированного процесса - следующий код будет работать, если предположить, что существует конкретное имя файла, для которого вы хотите запустить код, и в папке, которую вы ищете, существует только одна копия.Это возможно для запуска на диске 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 в синтаксисе, например:

get file=myfile.
...