SAS 根据起始价格创建滞后

标签 sas

我的数据集包含 n 周内在 x 个地点的多种商品的价格。我希望创建一个变量,对于任何给定位置/周,显示原始价格(列出的第一个价格)。我的数据集看起来像这样:

data have;
    input item $ location $ week price;
cards;
X NC 1 10
X NC 2 10
X NC 3 9.75
X SC 2 8
X SC 3 5
Y NC 1 100
Y NC 2 75
Y NC 3 50
Y NC 4 50
;
run;

我想要一个如下所示的数据集:

data want;
    input item $ location $ week price start_price;
cards;
X NC 1 10 10
X NC 2 10 10
X NC 3 9.75 10 
X SC 2 8 8
X SC 3 5 8
Y NC 1 100 100
Y NC 2 75 100
Y NC 3 50 100
Y NC 4 50 100
;
run;

我知道我可能可以使用第一个。变量以某种方式执行此操作,但无法对其进行排序。帮忙?

我尝试了这个,但看起来我需要多个分组才能正确显示位置......我需要连接项目/位置还是有更优雅的方法来做到这一点?

data want;
    set have;
    by item;
    if first.item then start_price=price;
    start_price+0;
run;

最佳答案

我会使用retain来保留最后一行的值。结果与 + 0 的 sum 语句相同,但我认为更有意义。

如果我对问题的理解正确,那么您希望first.location 设置start_price。只需使用 by item location; 即可执行此操作。

data want;
    set have;
    by item location;
    retain start_price;
    if first.location then start_price=price;
run;

关于SAS 根据起始价格创建滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018683/

相关文章:

sas - 计算数据线后的变量

sas - SAS:ODS EXCEL(如何命名不同的工作表)

sas - 如何在 SAS 中对多个变量执行相同的数据步骤?

sas - 使用 Proc sgplot 的条形图中每个条形的不同标签

sas - 从具有不同列的多个数据集创建模板数据集

logging - SAS 9.4 存储过程日志文件监控

sql - 计算 SAS 中的列累积总和和百分比

sas - 使用多个表保存来自 SAS proc freq 的结果

python - 如何计算两个 ZIP 之间的距离?

sas - 根据 Proc Sql 、SAS 中的条件将列拆分为两列