合并SPSS变量,如果它们不';t存在于原始文件中,使用Python

合并SPSS变量,如果它们不';t存在于原始文件中,使用Python,python,merge,spss,Python,Merge,Spss,我有一个SPSS文件,我正在从中删除不需要的变量,但如果不存在,我想从其他地方引入变量。因此,我正在寻找一些Python代码来加入到我的语法中,比如说——从列表中保留所有变量,如果第一个文件中不存在这些变量,那么从第二个文件中合并它们。(这里是Python新手…) 谢谢 以下是让您开始的方法: DATA LIST FREE / ID A B C D E. BEGIN DATA 1 11 12 13 14 15 END DATA. DATASET NAME DS1. DATA LIST FREE

我有一个SPSS文件,我正在从中删除不需要的变量,但如果不存在,我想从其他地方引入变量。因此,我正在寻找一些Python代码来加入到我的语法中,比如说——从列表中保留所有变量,如果第一个文件中不存在这些变量,那么从第二个文件中合并它们。(这里是Python新手…)


谢谢

以下是让您开始的方法:

DATA LIST FREE / ID A B C D E.
BEGIN DATA
1 11 12 13 14 15
END DATA.
DATASET NAME DS1.

DATA LIST FREE /  ID D E F G H.
BEGIN DATA
1 24 25 26 27 28
END DATA.
DATASET NAME DS2.

BEGIN PROGRAM PYTHON.
import spssaux, spss
spss.Submit("dataset activate ds1.")
ds1vars=[v.VariableName for v in spssaux.VariableDict()]
spss.Submit("dataset activate ds2.")
ds2vars=[v.VariableName for v in spssaux.VariableDict()]

extravars = [v for v in ds2vars if v not in ds1vars]

spss.Submit("""

DATASET ACTIVATE DS2.
ADD FILES FILE=* /KEEP=ID %s.
MATCH FILES FILE=DS1 /TABLE DS2 /BY ID.
DATASET NAME DS3.
DATASET ACTIVATE DS3.

""" % (" ".join(extravars) ) )

END PROGRAM PYTHON.

如果仅
匹配文件
,而不考虑缺少哪些变量,则只有
中存在且
文件
中不存在的变量才会添加到
文件

请注意,如果两个文件中的文本变量名称相同但宽度不同,则会遇到问题