我的SPSS数据框看起来像这样:
K_161 K_161_A K_161_B K_161_B K_161_C K_161_D K_213
0 0 0 0 0 1 0
1 0 0 0 1 1 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
1 1 1 1 1 1 1
0 0 0 1 1 1 1
0 0 0 0 1 1 1
0 1 1 1 1 1 1
1 0 0 0 0 1 0
0 0 0 0 0 0 0
1 1 0 1 1 1 1
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 0 0 1 0 0
1 1 0 1 0 1 1
0 1 0 0 0 1 0
0 1 0 0 0 0 0
0 1 0 1 1 0 0
基本上我想循环遍历变量(列)并返回可靠性度量Cronbach的alpha的值。 可以在Python中使用以下伪代码行的东西:
BEGIN PROGRAM.
import spss
unique_ids = open("E:/company_id.txt", "r")
for i in unique_ids:
i = "K_" + str(i)
spss.Submit(r'''
RELIABILITY
/VARIABLES= + i
/SCALE('ALL VARIABLES') ALL
/MODEL=ALPHA.
''')
END PROGRAM.
我有大约9000列。每个循环中使用的变量可以根据它们的唯一编号进行分组:例如对于161,循环将包括K_161 K_161_A K_161_B K_161_B K161_C K_161_D,依此类推。我有一个这样的唯一数字(文本文件)列表,如下所示:
161
213
263
284
295
297
306
347
SPSS语法返回Cronbach alpha的度量以及案例数。我想返回一个如下所示的数据框:
id cronbach cases
161 0.651 5
213 0.856 3
263 0.752 6
284 0.927 22
295 0.884 24
297 0.934 31
306 0.902 9
347 1
398 0.405 4
457 0.884 12
491 0.137 2
507 0.909 28
571 1
590 0.738 9
我缺乏创造力来找到合适的解决方案。真的在寻找一些如何解决问题的想法。非常感谢你!
答案 0 :(得分:0)
首先,我创建了两个数据集来模拟您的两个文件 - 一个带有您的ID,另一个带有实际数据用于分析:
data list free/id (f3).
begin data
161 444 213
end data.
dataset name numlist.
data list free/K_161 K_161_A K_161_B K_213_B K_161_C K_161_D K_213 K_213_A K_444 K_444_F K_444_K (11f3).
begin data
3 3 3 4 4 4 5 5 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
end data.
dataset name main.
现在想法是使用ID列表来编写新的语法文件
对于列表中的每个项目,新语法将:
1.定义一个宏,找到主文件中所有相应的变量名称
2.对它们进行可靠性分析
OMS命令将把输出中的cronbach数据捕获到另一个数据集中:
DATASET DECLARE MyAlphas.
OMS/SELECT TABLES/IF COMMANDS=['Reliability'] SUBTYPES=['Reliability Statistics']
/DESTINATION FORMAT=SAV NUMBERED=TableNumber_ OUTFILE='MyAlphas' .
dataset activate numlist.
write out="path\temp macro run.sps"
/'SPSSINC SELECT VARIABLES MACRONAME = "!a', id, '" /PROPERTIES PATTERN=".*', id, '*".'
/'RELIABILITY /VARIABLES= !a', id, ' /SCALE("ALL VARIABLES") ALL /MODEL=ALPHA.'.
dataset activate main.
insert file="path\temp macro run.sps".
omsend.
此时,您有一个名为MyAlphas
的数据集,其中包含运行的每个可靠性测试的cronbach值。它还没有ID,但是match files
这个带有ID列表的数据集很容易 -
您可以在列表中添加索引编号,并将其与TableNumber_
中的MyAlphas
匹配。