SAS通过EXPAND计算滚动总和但输出不正确的结果

问题描述 投票:0回答:1

我使用以下代码输出每三年的滚动总和,但通过添加不存在的数字,结果不正确。请找到滚动总和的代码。

proc expand data=have out=want;
by firmid ;
convert vcinvest_annual=cum_vc/transformout=(movsum 3 trimleft 2); 
run; 

请查看结果截图。

我发现当滚动总和为零时,这个问题更常见。为了避免小数点后隐藏数字,我使用了以下代码来截断小数。

data have;
set have;
put vcinvest_annual=6.4;
run

有人可以告诉我根本问题并提供解决它的指导吗?非常感谢!

sas
1个回答
0
投票

您可能有小的非零值。它们足够小,当按格式显示时,它们显示为零。您使用与旧变量不同的格式来显示新变量(如果数字变量没有附加格式,则使用 BEST12.),或者当您将其中三个变量添加在一起时,它们足够大,以至于 BEST 决定应该显示它们.

在传递输入值进行扩展之前尝试对输入值进行舍入。您为 vcinvest_annual 收集了多少位有效数字?您似乎只显示小数点后 2 位,请尝试四舍五入到小数点后 3 位(或者可能是 4 或 5 位)。

data rounded;
  set have;
  vcinvest_annual = round(vcinvest_annual,0.001);
run;
proc expand data=rounded out=want;
  by firmid ;
  convert vcinvest_annual=cum_vc/transformout=(movsum 3 trimleft 2); 
run; 
© www.soinside.com 2019 - 2024. All rights reserved.