【问题标题】:Create new variable based on column value in current row as well as previous row?根据当前行和前一行中的列值创建新变量?
【发布时间】:2017-07-17 15:30:53
【问题描述】:

给定数据集:

Year   var1
0      .56
1      .39
2      .28
3      .15
4      .09

你将如何创建一个新列,var2 = (var1n)/(var1n-1),并有 var21等于 var11?所需的输出如下所示:

Year   var1   var2
0      .56    .56
1      .39    .70
2      .28    .72
3      .15    .54
4      .09    .60

我知道如何使用RETAIN 语句来创建累积变量,但我不确定如何将它用于此特定任务。非常感谢您的任何见解。

【问题讨论】:

    标签: sas


    【解决方案1】:

    使用 LAG() 函数很容易做到。请记住确保在每次观察时始终运行 LAG() 函数。所以首先计算 VAR2,然后如果它是第一次观察,然后用你需要的初始值覆盖该值。

    data want ;
      input year var1 ;
      var2 = divide(var1,lag(var1));
      if _n_=1 then var2=var1;
    cards;
    0      .56
    1      .39
    2      .28
    3      .15
    4      .09
    ;
    

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2021-11-08
      • 2019-07-06
      相关资源
      最近更新 更多