获取sas中行级别的值之间的差异

获取sas中行级别的值之间的差异,sas,Sas,数据基本上是配置的逐月价格。我想知道数量的趋势。对于每种配置和总体趋势,12个月内的价格表现如何 Proc sql不支持“dif”语法。我无法在数据集中使用常规的“do”循环,因为这在这里并没有真正的帮助 有人能帮我吗 这段代码主要是对数据进行分组,并获得当月每个配置的平均价格 proc sql; create table c.price1 as select configuration, month, mean(retail_price) as amount format = dolla

数据基本上是配置的逐月价格。我想知道数量的趋势。对于每种配置和总体趋势,12个月内的价格表现如何

Proc sql不支持“dif”语法。我无法在数据集中使用常规的“do”循环,因为这在这里并没有真正的帮助

有人能帮我吗

这段代码主要是对数据进行分组,并获得当月每个配置的平均价格

proc sql;

create table c.price1 as 
select 
configuration,
month,
mean(retail_price) as amount format = dollar7.2

from c.price
where 
configuration is not missing 
and month is not missing 
and retail_price is not missing
group by configuration, month;
quit;
数据:

Configuration   Month     Amount
1                  1    $370.00
1                  2    $365.00
1                  3    $318.00
1                  4    $355.00
1                  5    $350.00
1                  6    $317.40
1                  7    $340.00
1                  8    $335.00
1                  9    $297.00
1                 10    $325.00
1                 11    $320.00
1                 12    $286.65
2                  1    $320.00
2                  2    $315.00
2                  3    $287.86
2                  4    $305.00
2                  5    $300.00
2                  6    $263.76 

……等等

将DIF功能与分组处理结合使用

Data want;
    Set have;
     By config;

      New_var = dif(amount);

      If first.config then new_var = .;
 Run;

我不明白你的问题是什么。你能发布你想要的输出吗?为什么不能使用带有dif函数的数据步骤?在条件a.month=b.month-1和a.config=b.config的情况下,始终可以将表连接到自身。如果使用dif函数,那么如何控制它。从某种意义上说,当配置从1变为2时,我不想要$320-$286.65(根据数据)。我想把它分组。因此,当配置更改时,dif函数将重新启动。通过组处理查找。如果first.config,那么value=。非常感谢!我在同一个密码上犯了错误。但我不知道“If first.config then new_var=.;”这段代码。现在一切都好了:当你做错事的时候。发布你的代码和日志。另外,定义分组。