【问题标题】:How can I read in multiple excel files in SPSS using a macro?如何使用宏在 SPSS 中读取多个 excel 文件?
【发布时间】:2015-01-10 00:07:44
【问题描述】:

我正在尝试编写一个宏来导入 15 个文件,所有文件都采用相同的格式。名称格式为“monyy PSF Extract”。所以我可以使用下面的代码来读取 Nov11 的 1 文件。我试图找到一种使用宏读取其他 14 个文件的方法。我似乎无法让它工作。我是 SPSS 新手 - 我知道如何在 SAS 中执行此操作。 我还想将创建的数据集设置为命名为 monyy。我还想将一些变量重命名为 original_name_monyy。

有人可以帮我解决这个问题吗?这让我发疯了!

define !XLSFILE() !quote(!con("S:\Credit Risk\Credit Risk\Elisabeth\",!unquote(!eval(!cq)), ".xlsx")) !enddefine.
define !cq(mon = !DEFAULT ("Nov11") !token(1) /name = !DEFAULT ("PSF Extract") !TOKENS(2)) !quo(!con(!unq(!mon),!unq(" "), !unq(!name))) !enddefine.


/* import xlsx file */.
GET DATA
  /TYPE=XLSX
  /FILE=!XLSFILE
  /SHEET=name 'Sheet1'
  /CELLRANGE=full
  /READNAMES=on
  /ASSUMEDSTRWIDTH=32767.

EXECUTE.

DATASET NAME  test WINDOW=FRONT.

【问题讨论】:

    标签: macros spss


    【解决方案1】:

    您可以在宏调用中传递文件名前缀列表并循环加载文件。下面是我将如何处理这个问题。它有点限制,因为您需要通过月份列表,但这是一项相当琐碎的任务。

    *******************************************************.
    DEFINE !XLSFILE(location = !TOKENS(1)
                    /names = !CMDEND).
    
    !DO !monthfile !IN (!names)
    
    !LET !XLSFILE = !QUOTE(!CONCAT(!UNQUOTE(!location),!monthfile," PSF Extract.xlsx"))
    
    /* import xlsx file */.
    GET DATA
      /TYPE=XLSX
      /FILE=!XLSFILE
      /SHEET=name 'Sheet1'
      /CELLRANGE=full
      /READNAMES=on
      /ASSUMEDSTRWIDTH=32767.
    *Name dataset.
    dataset name !monthfile.
    
    **PLACE RENAME COMMANDS HERE.
    *Example changing [XVAR1] and [XVAR2] to [XVAR1_monyy] and [XVAR2_monyy].
    rename variables (XVAR1 = !CONCAT("XVAR1","_",!monthfile))
    (XVAR2 = !CONCAT("XVAR2","_",!monthfile)).
    
    !DOEND.
    
    *now do whatever you want with the datasets, eg add files them together.
    !ENDDEFINE.
    *******************************************************.
    
    *call the macro.
    set mprint on.
    !XLSFILE location = "S:\Credit Risk\Credit Risk\Elisabeth\"
    names = Jan11 Feb11 Mar11 Apr11 May11 Jun11 Jul11 Aug11 Sep11 Oct11 Nov11 Dec11. 
    

    【讨论】:

    • 太棒了。谢谢你。我会试试看的!
    • 太棒了!它奏效了。太感谢了。看到写出的语法,我可以看到它是直截了当的。但我真的很难到达那里。谢谢!!
    • 很高兴了解 Enucera - 请随时查看此内容,因为它回答了您的问题并点赞。祝你从 SAS 迁移到 SPSS 好运。
    【解决方案2】:

    另一种方法是使用带有通配符表达式的 Python 可编程性来获取特定位置中具有指定名称模式的所有文件。更灵活,避免使用宏。您可以从 SPSS 社区站点 www.ibm.com/developerworks/spssdevcentral 的 Books and Articles 部分下载 Programmaing and Data Management 一书了解更多信息

    【讨论】:

    • 听起来不错。看起来我们没有 Python。我可能会了解成本和收益,以便评估是否可以购买。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多