Я новичок в макросах SPSS и пытаюсь открыть файл CSV по указанному пути в переменной.
Обратите внимание, что я хочу установить все переменные в верхней части файла, чтобы я мог легко решить импортировать другой файл с другим именем.
Это мой код:
/* settings */
define !SYMB() "VIX". !enddefine.
define !CSVFILE() "E:\Downloads\$" + !SYMB + ".csv". !enddefine.
/* import csv file */
GET DATA
/TYPE=TXT
/FILE=!CSVFILE
/DELCASE=LINE
/DELIMITERS=","
/ARRANGEMENT=DELIMITED
/FIRSTCASE=1
/IMPORTCASE=ALL
/VARIABLES=
V1 5X
Date ADATE10
!SYMB + 'O' F7.2
!SYMB + 'H' F7.2
!SYMB + 'L' F7.2
!SYMB + 'C' F7.2.
CACHE.
EXECUTE.
DATASET NAME "DataSet" + !SYMB WINDOW=FRONT.
К сожалению, я получаю следующие ошибки:
/ * настройки * / определить! SYMB () "VIX". ! ENDDEFINE. определить! CSVFILE ()
"E: \ Downloads \ $" +! SYMB + ".csv". ! ENDDEFINE.
Предупреждение № 207 в столбце 13. Текст: E: \ Downloads \ $
«+» Был найден после текстовой строки, указывающей продолжение, но следующий
непустой символ не был кавычкой или апострофом.
/ * импорт CSV-файла * / GET DATA / TYPE = TXT / FILE =! CSVFILE
Error. Название команды: GET DATA
(2256) Неверная подкоманда: FILE
Выполнение этой команды прекращается.
Ошибка № 1. Название команды: +
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. / DELCASE = ЛИНИЯ
Ошибка № 1. Имя команды: / DELCASE
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. / DELIMITERS = "," / ARRANGEMENT = DELIMITED / FIRSTCASE = 1 / IMPORTCASE = ALL / VARIABLES =
V1 5X Дата ADATE10! SYMB + 'O' F7.2
Ошибка № 1. Название команды: +
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. ! SYMB + 'H' F7.2
Ошибка № 1. Название команды: +
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. ! SYMB + 'L' F7.2
Ошибка № 1. Название команды: +
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. ! SYMB + 'C' F7.2.
Ошибка № 1. Название команды: +
Первое слово в строке не распознается как команда SPSS Statistics.
Выполнение этой команды прекращается. КЭШ. ВЫПОЛНИТЬ.
Ошибка № 105. Имя команды: ВЫПОЛНИТЬ
Эта команда недопустима до определения рабочего файла.
Выполнение этой команды прекращается. НАИМЕНОВАНИЕ ДАННОГО КОМПЛЕКТА "DataSet" +! ОКНО СИМБА = ПЕРЕДНЯЯ.
Как мне это сделать?
Вывод на предложенный макрос :
/* settings */
define !SYMB() "VIX" !enddefine.
define !CSVFILE() !quo(!con("E:\Downloads\$", !unq(!eva(!SYMB)), ".csv")) !enddefine.
define !c(str1 = !tok(1) /str2 = !tok(1)) !con(!unq(str1), !unq(str2)) !end.
define !cq(str1 = !tok(1) /str2 = !tok(1)) !quo(!con(!unq(str1), !unq(str2))) !end.
/* import csv file */
GET DATA
/TYPE=TXT
/FILE=!CSVFILE /DELCASE=LINE
/DELIMITERS=","
/ARRANGEMENT=DELIMITED
/FIRSTCASE=1
/IMPORTCASE=ALL
/VARIABLES=
V1 5X
Date ADATE10
!c !str1=!SYMB str2="O" F7.2
>Warning # 210 in column 2. Text: !str1
>A macro symbol is invalid in this context.
>The symbol will be treated as an invalid special character.
!c !str1=!SYMB str2="H" F7.2
>Warning # 210 in column 2. Text: !str1
>A macro symbol is invalid in this context.
>The symbol will be treated as an invalid special character.
!c !str1=!SYMB str2="L" F7.2
>Warning # 210 in column 2. Text: !str1
>A macro symbol is invalid in this context.
>The symbol will be treated as an invalid special character.
!c !str1=!SYMB str2="C" F7.2.
>Warning # 210 in column 2. Text: !str1
>A macro symbol is invalid in this context.
>The symbol will be treated as an invalid special character.
>Error. Command name: GET DATA
>(2265) Unrecognized or invalid variable format. The format is invalid. For
>numeric formats, the width or decimals value may be invalid.
>Execution of this command stops.
CACHE.
EXECUTE.
>Error # 105. Command name: EXECUTE
>This command is not valid before a working file has been defined.
>Execution of this command stops.
DATASET NAME !cq !str1="DataSet" !str2=!SYMB WINDOW=FRONT.
Тестовый вывод:
set err=off.
set mpr=on.
set printback=on.
11 0 M> set printback=on.
12 0 M>
!c str1="A" str2="B".
13 0 M> !c str1="A" str2="B".
!cq str1="A" str2="B".
14 0 M> !cq str1="A" str2="B".
15 0 M>
set printback=off.
16 0 M> set printback=off.