使用语法在 SPSS 数据集之间复制变量
Copy variable between SPSS Datasets using Syntax
根据反馈进行编辑...
有没有办法在 SPSS 中将变量从一个打开的数据集复制到另一个?我尝试的是创建一个捕获变量值的临时变量,并在计算命令中使用该临时变量到下一个数据集:
DATASET ACTIVATE DataSet1.
COMPUTE #IDSratch = ID.
Dataset Activate DataSet2.
Compute ID = #IDScratch.
这失败了,因为激活 Dataset2 导致从内存中删除临时变量。
匹配文件 and/or STAR JOIN 语法适用于大多数情况,但在我的例子中,因为 Dataset1 的记录比 Dataset2 多得多,并且两个数据集中都没有匹配的键,这会产生额外的记录。
我最初的问题是“是否有一种简单、直接的方法可以在数据集之间复制变量?”如果使用语法,答案似乎仍然是通过语法合并文件是 best/only 方法。
从 SPSS 21.0 版开始,STAR JOIN
命令 (see documentation here) 允许您使用 SQL 语法连接数据集。所以基本上,你只能从每个数据集中获得你想要的变量。
假设您的第一个数据集名为 data_1 并且具有 id
和 var_1a
。你的第二个数据叫data_2,有相同的id
和var_2a
;你只想将 var_2a
拉到第一个数据集。如果两个数据集都打开,则可以 运行:
dataset activate data_1.
STAR JOIN
/SELECT t0.var_1a, t1.var_2a
/FROM * AS t0
/JOIN 'data_2' AS t1
ON t0.id=t1.id
/OUTFILE FILE=*.
我上面提供的 link 有很多关于如何连接保存在您计算机中的文件的变量的示例。
根据反馈进行编辑...
有没有办法在 SPSS 中将变量从一个打开的数据集复制到另一个?我尝试的是创建一个捕获变量值的临时变量,并在计算命令中使用该临时变量到下一个数据集:
DATASET ACTIVATE DataSet1.
COMPUTE #IDSratch = ID.
Dataset Activate DataSet2.
Compute ID = #IDScratch.
这失败了,因为激活 Dataset2 导致从内存中删除临时变量。
匹配文件 and/or STAR JOIN 语法适用于大多数情况,但在我的例子中,因为 Dataset1 的记录比 Dataset2 多得多,并且两个数据集中都没有匹配的键,这会产生额外的记录。
我最初的问题是“是否有一种简单、直接的方法可以在数据集之间复制变量?”如果使用语法,答案似乎仍然是通过语法合并文件是 best/only 方法。
从 SPSS 21.0 版开始,STAR JOIN
命令 (see documentation here) 允许您使用 SQL 语法连接数据集。所以基本上,你只能从每个数据集中获得你想要的变量。
假设您的第一个数据集名为 data_1 并且具有 id
和 var_1a
。你的第二个数据叫data_2,有相同的id
和var_2a
;你只想将 var_2a
拉到第一个数据集。如果两个数据集都打开,则可以 运行:
dataset activate data_1.
STAR JOIN
/SELECT t0.var_1a, t1.var_2a
/FROM * AS t0
/JOIN 'data_2' AS t1
ON t0.id=t1.id
/OUTFILE FILE=*.
我上面提供的 link 有很多关于如何连接保存在您计算机中的文件的变量的示例。