【问题标题】:Copy variable between SPSS Datasets using Syntax使用语法在 SPSS 数据集之间复制变量
【发布时间】:2020-11-09 20:54:54
【问题描述】:

根据反馈编辑...

有没有办法在 SPSS 中将变量从一个打开的数据集复制到另一个数据集中?我尝试的是创建一个捕获变量值的临时变量,并在计算命令中将该临时变量用于下一个数据集:

DATASET ACTIVATE DataSet1.
COMPUTE #IDSratch = ID.
Dataset Activate DataSet2.
Compute ID = #IDScratch.

这会失败,因为激活 Dataset2 会导致临时变量从内存中删除。

匹配文件和/或 STAR JOIN 语法适用于大多数情况,但在我的情况下,因为 Dataset1 的记录比 Dataset2 多,而且两个数据集中都没有匹配的键,这会产生额外的记录。

我最初的问题是“是否有一种简单、直接的方法可以在数据集之间复制变量?”答案似乎仍然是,如果使用语法,通过语法合并文件是最好/唯一的方法。

【问题讨论】:

  • 创建临时变量时,在活动数据集中创建它 - 它不存在于任何其他数据集中。将数据从一个数据集附加到另一个数据集的唯一方法是匹配文件 - 如果操作正确,则不会添加任何案例...请添加数据集的描述(+一些示例数据将帮助),以便我们了解问题并提出合适的解决方案。
  • 在您的编辑中不清楚您是否仍在寻求答案?如果是这样,请参阅我上面的评论 - 我们可能可以帮助提供语法解决方案,但前提是您提供数据结构的描述 + 示例

标签: spss


【解决方案1】:

自 SPSS 21.0 版起,STAR JOIN 命令(see documentation here) 允许您使用 SQL 语法来连接数据集。所以基本上,你只能从每个数据集中得到你想要的变量。

假设您的第一个数据集名为 data_1,并具有 idvar_1a。您的第二个数据称为data_2,具有相同的idvar_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=*.

我在上面提供的链接有很多关于如何连接保存在您计算机中的文件变量的示例。

【讨论】:

  • +1 在星形连接上,尽管我从阅读 OP 怀疑我们要从中获取数据的表不是键控表存在问题 - 这会产生“额外记录”的问题。如果是这样,这将需要一个额外的步骤,如聚合。
  • 哦,好的。我重新阅读了它,现在我明白了你所说的。看来你是对的
  • 谢谢你们俩。我使用 OMS 从单个数据集生成多个数据集,这些数据集具有将 OMS 数据集自动导出到 SQL 数据库所需的唯一键。在 SPSS 之外进行这种匹配最终变得更容易。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多