【问题标题】:Looping through a few files and analyzing each遍历几个文件并分析每个文件
【发布时间】:2020-06-15 15:39:25
【问题描述】:

我想用 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
....'

不起作用的部分是当我使用变量“文件”时它无法识别它。 最后我想把这段代码放到一个循环中。 也许我有一个聪明的方法?

【问题讨论】:

  • 在下面查看我的答案,但也有一个有用的提示:计算文件名时,您可以在一行中得到相同的结果,如下所示:compute file=concat("'", directory, "integ_", type, "_1_unif_tiny_1.csv" ,"'").。另请注意,在任何情况下,您都不需要在每个语法行之后执行 EXECUTE(有时根本不需要 - 查一下)。

标签: loops csv spss


【解决方案1】:

一旦定义了变量名和路径,就可以使用write 命令将其放入语法中,这将创建一个包含已编辑命令的新语法 - 然后您可以insert .

要继续您帖子中的示例,您可以这样继续:

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 变量中),插入的语法将依次打开它们中的每一个并在其上运行三个额外的命令。

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 2020-02-10
    • 2017-02-08
    • 2017-03-02
    • 2017-01-24
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多