我有一个关于几个组织过去两年的预算信息的表,我需要为今年的信息添加列。实际上,我有一个表格,列是:1年预算/2年预算/Y2变化($)/Y2变化(%)/3年预算/Y3变化($)/Y3变化(%)
data test;
input Y1 Y2 y2changedollar y2changeperc y3 y3changedollar y3changeperc;
datalines;
3700925 4940398 1239473 0.335 8687418 3747020 0.758
700930 686911 -14019 -0.020 672175 -14736 -0.021
2135970 2134584 -1386 -0.001 2162260 27676 0.013
2373620 2326148 -47472 -0.020 2245862 -80286 -0.035
555373 557830 2457 0.004 548386 -9444 -0.017
;
run;
我需要生成一个包含这些信息的报告,以及底部汇总每列的摘要行。前一年的文档使用proc report中的summary命令来完成此操作,但我认为这有一个问题。
PROC REPORT data=test;
COLUMN y1 y2 y2changedollar y2changeperc y3 y3changedollar y3changeperc;
DEFINE y1 / ANALYSIS FORMAT=DOLLAR15.;
DEFINE y2 / ANALYSIS FORMAT=DOLLAR15.;
DEFINE y2changedollar / ANALYSIS '$ Change' FORMAT=DOLLAR15.;
/*DEFINE y2changeperc / analysis '% Change' FORMAT=pctc.;*/
DEFINE y3 / ANALYSIS FORMAT=DOLLAR15.;
DEFINE y3changedollar / ANALYSIS '$ Change' FORMAT=DOLLAR15.;
/*DEFINE y3changeperc / analysis '% Change' FORMAT=pctc.;*/
RBREAK AFTER / SUMMARIZE STYLE=[background=grey font_weight=bold font_style=italic];
;
RUN;
结果是这样的:
| Y1 | Y2 | $Change | % Change | Y3 | $Change | % Change |
| 9466818 | 10645871 | 1179053 | 0.298 | 14316101 | 3670230 | 0.698 |
| 9466818 | 10645871 | 1179053 | 0.298 | 14316101 | 3670230 | 0.698 |
与指定的方式(灰色背景,粗体,斜体)的底部的样式。
所以我遇到的问题是:
为什么实际数据不打印在表中?(可能是一个非常简单的&愚蠢的错误,但SAS不是我喜欢的软件,所以我不知道我错过了什么。
百分比变化似乎不准确。我计算变化的百分比是(Y2-Y1)/Y1,所以对于总变化的百分比,我需要用其他列的和来做- (TY2 - TY1)/TY1(对吧?)如果我没算错的话,这个百分比的变化应该是0.124,而不是0.298。
1179053/9466818 = 0.1245 (Year1-2 Change)
3670230/10645871 = 0.3447 (year -3 Change)
我知道表中的数字是通过添加列得到的,与其他列相同。有没有办法停止/改变这一点,使数学是正确的?
如果我将两个百分比变化列格式化为报告中的百分比(注释掉的行),而不是为两个总数百分比获得0.298和0.698,我将分别获得0和1。有人知道发生了什么吗?在我正在使用的实际数据集中,我得到的值既不是百分比列的总和,也不是总百分比变化的计算,我不知道是什么数学导致了这个数字。
如果有人对这些问题有任何见解,我将非常感激。谢谢!
- 您将变量的角色设置为分析而不是显示,因此只显示摘要。
- 我认为你需要在这里使用自定义计算,而不是依赖于自动计算。不幸的是,我对这个知之甚少。
- 你正在使用自定义格式,所以很难确切地说为什么,但是如果你使用百分比12.1格式,它会正确显示给我。请显示百分比格式的定义。
这是不是更接近你想看的?
PROC REPORT data=test;
COLUMN y1 y2 y2changedollar y2changeperc y3 y3changedollar y3changeperc;
DEFINE y1 / display FORMAT=DOLLAR15.;
DEFINE y2 / display FORMAT=DOLLAR15.;
DEFINE y2changedollar / display '$ Change' FORMAT=DOLLAR15.;
DEFINE y2changeperc / display '% Change' FORMAT=percent12.1;
DEFINE y3 / display FORMAT=DOLLAR15.;
DEFINE y3changedollar / display '$ Change' FORMAT=DOLLAR15.;
DEFINE y3changeperc / display '% Change' FORMAT=percent12.1;
RBREAK AFTER / SUMMARIZE STYLE=[background=grey font_weight=bold font_style=italic];
;
RUN;