【问题标题】:Create variable conditional on last and current observation variables values以最后和当前观察变量值为条件创建变量
【发布时间】:2017-10-30 03:33:15
【问题描述】:

基于下面的简化数据集,我想创建一个新变量 X3,如果最后一个观察值 by 变量 id 具有默认值 = 1 并且如果 X1 = X2,else X3 = 0.

data example;
    input id default X1 X2;
    cards;
    1 0 0 1
    1 0 0 1
    1 0 1 1
    1 0 0 1
    1 1 0 1
    2 0 0 1
    2 0 1 1
    2 0 0 1
    2 0 0 1
    2 1 0 1
    3 0 0 1
    3 0 1 1
    ;
run;

新数据集应如下所示:

id default X1 X2 X3;
1 0 0 1 0
1 0 0 1 0
1 0 1 1 1
1 0 0 1 0
1 1 0 1 0
2 0 0 1 0
2 0 1 1 1
2 0 0 1 0
2 0 0 1 0
2 1 0 1 0
3 0 0 1 0
3 0 0 1 0

我尝试了很多方法,但找不到任何解决方案。任何建议将不胜感激!

【问题讨论】:

  • 你有控制顺序的变量吗?如果我们可以颠倒顺序,这样您就可以使用 BY 组的第一个而不是最后一个值,这将是最简单的。另外,请根据 StackOverflow 规则发布您迄今为止尝试过的内容。我会编辑您的问题以格式化您的数据,但您以后应该这样做。
  • 要在 SAS 中为 SO 自动格式化代码,突出显示代码并点击 TAB。它会自动缩进,因此当您将其粘贴到此处时,它的格式正确。

标签: sas survival-analysis


【解决方案1】:

双 DOW 循环是这里的方法:

data want;
do _n_ = 1 by 1 until (last.ID);
  set example;
  by ID;
  if last.ID and default = 1 then last_default = 1;
  drop last_default;
end;
do _n_ = 1 to _n_;
  set example;
  x3 = x1 = x2 and last_default;
  output;
end;
run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2020-09-11
    • 2020-07-14
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多