获取sas中行级别的值之间的差异
数据基本上是配置的逐月价格。我想知道数量的趋势。对于每种配置和总体趋势,12个月内的价格表现如何 Proc sql不支持“dif”语法。我无法在数据集中使用常规的“do”循环,因为这在这里并没有真正的帮助 有人能帮我吗 这段代码主要是对数据进行分组,并获得当月每个配置的平均价格获取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
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=.;”这段代码。现在一切都好了:当你做错事的时候。发布你的代码和日志。另外,定义分组。