【问题标题】:Carry Forward Data for Each Case为每个案例结转数据
【发布时间】:2020-06-12 16:48:39
【问题描述】:

在 SPSS 中,如何将纵向数据拉到每个 id 的空白单元格?

例子:

ID Time Gender
1  1    M
1  2    .
1  3    .
2  1    F
2  2    .
2  3    .
3  1    .
3  2    F
3  3    .

我如何做到这一点?

ID Time Gender Gender_Recoded
1  1    M      M
1  2    .      M
1  3    .      M
2  1    F      F
2  2    .      F
2  3    .      F
3  1    .      .
3  2    F      F
3  3    .      F

然后一旦我能够继续前进,是否有一个命令可以像示例 3、1 中那样执行反向操作,以便 F 拉起?

谢谢!!!

【问题讨论】:

  • 欢迎来到 Stack-Overflow!如果其中一个答案解决了您的问题,请选择它作为解决方案(单击它旁边的 V)。也请为您认为有用的任何答案投票。

标签: time-series spss longitudinal


【解决方案1】:

您可以使用AGGREGATE 函数来执行此操作。您可以通过设置 /BREAK 指定要分组的变量,然后使用 Aggregate Functions 创建聚合变量。

在这种情况下,FIRST() 会将每个ID 中的第一个非缺失值应用于所有具有相同ID 的行/观察。由于它采用第一个 非缺失 值,因此它既“向前”又“向后”与每个 ID 关联的 Gender 值(解决您的两种情况)。

AGGREGATE
 /OUTFILE=* MODE=ADDVARIABLES
 /BREAK=ID
 /Gender_Recoded=FIRST(Gender) .

【讨论】:

  • 优秀的解决方案 - 也可以使用 max 而不是第一个。
  • 你太棒了!!!!非常感谢!!!!请将其发布到互联网上 - 我与很多人交谈,搜索了几个月试图找到此编码...甚至与 IBM SPSS 技术部门交谈...谢谢!
  • 很高兴它有帮助!如果提供的解决方案之一回答了您的问题,请考虑接受它作为答案和/或为您投票任何有用的答案。 :)
【解决方案2】:

@user45392 建议的解决方案是完美的,但这是另一个不错的解决方案:

首先,我们将现有值放在每个 ID 的第一行,然后对于重复的 ID,我们从上面的行中复制性别值:

sort cases by ID gender (d). 
if ID=lag(ID) gender=lag(gender). 

【讨论】:

  • 也谢谢你。我之前尝试过延迟,但不知道如何通过 ID 关联它。这也很有帮助!
猜你喜欢
  • 2015-01-08
  • 2016-03-18
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多