循环浏览几个文件并分析每个文件
Looping through a few files and analyzing each
我想用 SPSS 对几个 csv 文件做一些测试。我的问题是,我想:
打开一个文件 -> 做我的测试 -> 报告 -> 等等
现在,当我为一个文件播放 prog 时一切正常,所以我想转到下一步。
现在我有这样一个代码:
DATA LIST FREE/ directory (A100) file (A100) type (A10).
BEGIN DATA
C:\Users\Olivier\Desktop\Zebrys\data\ integ_ narr
END DATA.
compute file=concat(directory,"integ_").
EXECUTE.
compute file=concat(file,type).
EXECUTE.
compute file=concat(file,"_1_unif_tiny_1.csv").
EXECUTE.
compute file=concat("'",file,"'").
EXECUTE.
GET DATA /TYPE=TXT
/FILE=file
/ENCODING='UTF8
....'
不起作用的部分是当我使用变量 "file" 时它无法识别它。
最后我想把这段代码放到一个循环中。
也许我有一个聪明的方法来做到这一点?
一旦你定义了变量名和路径,你就可以使用 write
命令将它放入语法中,这将创建一个新的语法,其中包含一个编辑过的命令 - 你可以然后 insert
。
要继续您 post 中的示例,您可以这样继续:
write out="somepath\open my data.sps"
/"GET DATA /TYPE=TXT /FILE=", file," /ENCODING='UTF8' ... ." .
insert file="somepath\open my data.sps" .
以上语法将按照定义打开文件。
这当然是循环访问几个文件的良好基础 - 将为当前数据中的每一行创建一个 get data
命令。如果您使用 data list
命令创建几个文件名,它们将全部打开。
现在您还想在打开每个文件后添加一些分析。您可以通过在每个 get data
命令后向创建的语法添加行来做到这一点:
write out="somepath\open my data.sps"
/"GET DATA /TYPE=TXT /FILE=", file," /ENCODING='UTF8' ... ."
/"dataset name newdata."
/"freq var1 to var30".
/"dataset close newdata." .
insert file="somepath\open my data.sps" .
现在,如果您在数据中定义了几个名称(在 file
变量中),插入的语法将依次打开它们中的每一个,并且 运行 它上面的三个额外命令.
我想用 SPSS 对几个 csv 文件做一些测试。我的问题是,我想: 打开一个文件 -> 做我的测试 -> 报告 -> 等等 现在,当我为一个文件播放 prog 时一切正常,所以我想转到下一步。 现在我有这样一个代码:
DATA LIST FREE/ directory (A100) file (A100) type (A10).
BEGIN DATA
C:\Users\Olivier\Desktop\Zebrys\data\ integ_ narr
END DATA.
compute file=concat(directory,"integ_").
EXECUTE.
compute file=concat(file,type).
EXECUTE.
compute file=concat(file,"_1_unif_tiny_1.csv").
EXECUTE.
compute file=concat("'",file,"'").
EXECUTE.
GET DATA /TYPE=TXT
/FILE=file
/ENCODING='UTF8
....'
不起作用的部分是当我使用变量 "file" 时它无法识别它。 最后我想把这段代码放到一个循环中。 也许我有一个聪明的方法来做到这一点?
一旦你定义了变量名和路径,你就可以使用 write
命令将它放入语法中,这将创建一个新的语法,其中包含一个编辑过的命令 - 你可以然后 insert
。
要继续您 post 中的示例,您可以这样继续:
write out="somepath\open my data.sps"
/"GET DATA /TYPE=TXT /FILE=", file," /ENCODING='UTF8' ... ." .
insert file="somepath\open my data.sps" .
以上语法将按照定义打开文件。
这当然是循环访问几个文件的良好基础 - 将为当前数据中的每一行创建一个 get data
命令。如果您使用 data list
命令创建几个文件名,它们将全部打开。
现在您还想在打开每个文件后添加一些分析。您可以通过在每个 get data
命令后向创建的语法添加行来做到这一点:
write out="somepath\open my data.sps"
/"GET DATA /TYPE=TXT /FILE=", file," /ENCODING='UTF8' ... ."
/"dataset name newdata."
/"freq var1 to var30".
/"dataset close newdata." .
insert file="somepath\open my data.sps" .
现在,如果您在数据中定义了几个名称(在 file
变量中),插入的语法将依次打开它们中的每一个,并且 运行 它上面的三个额外命令.