Loops 宏以在SPSS中打开、重新编码和堆叠多个.csv文件
我正在尝试编写一个宏:Loops 宏以在SPSS中打开、重新编码和堆叠多个.csv文件,loops,macros,spss,Loops,Macros,Spss,我正在尝试编写一个宏: 将多个.csv顺序文件中的年、月、id、值和动机列导入SPSS。这些文件的名称如下:DATA\u JAN\u 2010,DATA\u FEB\u 2010[…],直到DATA\u DEC\u 2019。这些是csv文件的第一个变量(最后提供了我用来导入这些变量的代码) 如有必要(需要堆叠所有文件),将列的类型id更改为(a11),motive更改为(a32) 将所有这些数据集堆叠在名为:DATA\u 2010\u 2019的新数据集中 现在,我要做的是分别导入每个文
年
、月
、id
、值
和动机
列导入SPSS。这些文件的名称如下:DATA\u JAN\u 2010
,DATA\u FEB\u 2010
[…],直到DATA\u DEC\u 2019
。这些是csv文件的第一个变量(最后提供了我用来导入这些变量的代码)
id
更改为(a11)
,motive
更改为(a32)
DATA\u 2010\u 2019
的新数据集中
GET DATA /TYPE=TXT
/FILE="C:\Users\luizz\DATA\DATA_JAN_2010.csv"
/ENCODING='Locale'
/DELCASE=LINE
/DELIMITERS=";"
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
YEAR F4.0
MONTH F1.0
ID A11
VALUE F4.0
MOTIVE A8.
CACHE.
EXECUTE.
DATASET NAME JAN_2010 WINDOW=FRONT.
ALTER TYPE MOTIVE (a32).
GET DATA /TYPE=TXT
/FILE="C:\Users\luizz\DATA\DATA_FEB_2010.csv"
/ENCODING='Locale'
/DELCASE=LINE
/DELIMITERS=";"
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
YEAR F4.0
MONTH F1.0
ID A11
VALUE F4.0
MOTIVE A8.
CACHE.
EXECUTE.
DATASET NAME FEB_2010 WINDOW=FRONT.
DATASET ACTIVATE FEB_2010.
ALTER TYPE MOTIVE (a32).
DATASET ACTIVATE JAN_2010.
ADD FILES /FILE=*
/FILE='FEB_2010'.
EXECUTE.
SAVE OUTFILE='C:\Users\luizz\DATA\DATA_JAN_FEV_2010.sav'
/COMPRESSED.
假设所有文件的参数相同,可以使用如下宏:
define !getfiles ()
!do !yr=2010 !to 2019
!do !mn !in("JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC")
GET DATA
/TYPE=TXT /FILE=!concat('"C:\Users\luizz\DATA\DATA_', !mn, '_', !yr, '.csv"')
/ENCODING='Locale' /DELCASE=LINE /DELIMITERS=";" /ARRANGEMENT=DELIMITED
/FIRSTCASE=2 /IMPORTCASE=ALL /VARIABLES=
YEAR F4.0
MONTH F1.0
ID A11
VALUE F4.0
MOTIVE A8.
CACHE.
EXECUTE.
ALTER TYPE id (a11) MOTIVE (a32).
dataset name tmp.
dataset activate gen.
add files /file=* /file=tmp.
exe.
!doend !doend
!enddefine.
定义的宏将读取每个文件并将其添加到主文件中。在调用宏之前,我们将创建主文件:
data list list/YEAR (F4) MONTH (F1) ID (A11) VALUE (F4) MOTIVE (A8).
begin data
end data.
exe.
dataset name gen.
* now we can call the macro.
!getfiles .
* now the data is all combined and we can save it.
SAVE OUTFILE='C:\Users\luizz\DATA\DATA_JAN_FEV_2010.sav' /COMPRESSED.
注意:我在宏中使用了原始帖子中的代码。请确保所有的定义都是正确的。Hi@eli-k,非常感谢您的代码!我在运行它时出错了。“未知数据集生成。此命令的执行停止。”。但后来我想了一会儿,我明白了。创建主文件后,您忘记写入“dataset name gen.”。然后它运行顺利!!!谢谢我不知道如何在SPSS上编写宏。你的更正是完全正确的。很高兴有帮助!