如果原始文件中不存在 SPSS 变量,则合并它们,使用 Python
Merge SPSS variables if they don't exist in the original file, using Python
我有一个 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.
如果只是match files
不管缺少什么变量,只有table
中存在而file
中不存在的变量才会被添加到file
.
请注意,如果您在两个文件中都有名称相同但宽度不同的文本变量,则会遇到麻烦。
我有一个 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.
如果只是match files
不管缺少什么变量,只有table
中存在而file
中不存在的变量才会被添加到file
.
请注意,如果您在两个文件中都有名称相同但宽度不同的文本变量,则会遇到麻烦。