问题描述
我有 50 个外部 EXCEL 文件。对于这些文件中的每一个,假设 #I
,我按照 SPSS-statistics25 的语法导入数据:
GET DATA /TYPE=XLSX
/FILE='file#I.xlsx'
/SHEET=name 'Sheet2'
/CELLRANGE=full
/READNAMES=on
/ASSUMEDSTRWIDTH=32767.
EXECUTE.
DATASET NAME DataSet1 WINDOW=FRONT.
然后,我对 #I
文件 (WA CI) 中包含的变量进行排名,最多选择一个案例,如下所示:
RANK VARIABLES= WA CI (D)
/RANK
/PRINT=YES
/TIES=LOW.
COUNT SVAR= RWA RCI (1).
SELECT IF( SVAR=2).
EXECUTE.
任务如下:
我应该在每个 EXCEL 文件 #I
上打印 RWA 循环值的总和。 RWA 的值可以为 1,也可以为空。如果没有选择的案例(RWA 为空),则对值总和的贡献应为 0。最终结果应为 RWA 和 RCI 在 50 个 Excel 文件中具有相同 TOP 排名的次数。
我怎样才能以聪明的方式做到这一点?
解决方法
由于看不到真实的数据文件,下面有点摸不着头脑,但我认为应该是一个可行的策略(你不妨试试:)):
* first defining a macro to stack all the files together.
define stackFiles ()
GET DATA /TYPE=XLSX /FILE='file1.xlsx'
/SHEET=name 'Sheet2' /CELLRANGE=full /READNAMES=on /ASSUMEDSTRWIDTH=32767 /keep WA CI.
compute source=1.
exe.
dataset name gen.
!do !i=2 !to 40
GET DATA /TYPE=XLSX /FILE=!concat("'file",!i,".xlsx'")
/SHEET=name 'Sheet2' /CELLRANGE=full /READNAMES=on /ASSUMEDSTRWIDTH=32767/keep WA CI.
compute source=!i.
exe.
add files /file=gen /file=*.
exe.
!doend.
!enddefine.
* now run the macro.
stackFiles .
* now for the rest of the analysis.
* first split the data by source file,then rank and select.
sort cases by source.
split file by source.
RANK VARIABLES= WA CI (D) /RANK /PRINT=YES /TIES=LOW.
COUNT SVAR= RWA RCI (1).
SELECT IF SVAR=2.
EXECUTE.
此时您最多剩余 40 行 - 每个原始文件中的 0 或 1 行。您可以使用 descriptives RWA.