我是 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"。!结束定义。定义 !CSVFILE() "E:\Downloads\$" + !SYMB + ".csv"。!结束定义。
第 13 列中的警告 #207。文本:E:\Downloads\$ 在文本字符串之后发现一个“+”,表示继续,但下一个非空白字符不是引号或撇号。
/* 导入 csv 文件 */ GET DATA /TYPE=TXT /FILE=!CSVFILE
错误。命令名称:GET DATA (2256) 无效的子命令:FILE 此命令的执行停止。
错误 # 1. 命令名称:+ 行中的第一个单词未被识别为 SPSS Statistics 命令。该命令的执行停止。/DELCASE=LINE
错误 # 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。命令名称:EXECUTE 此命令在定义工作文件之前无效。该命令的执行停止。数据集名称“数据集”+!SYMB WINDOW=FRONT。
我应该怎么做?
建议宏的输出:
/* 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.