0

我有一张包含过去两年信息的几个组织预算的表格,我需要为今年的信息添加列。因此,基本上,我有一个表格,其中包含以下列:第 1 年预算/第 2 年预算/第 2 年更改($)/第 2 年更改(%)/第 3 年预算/第 3 年更改($)/第 3 年更改(%)。

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 中的 summarise 命令来执行此操作,但我认为这样做有问题。

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 | $更改 | % 变化 | Y3 | $ 更改 | % 变化 |

| 9,466,818 美元 | 10,645,871 美元 | 1,179,053 美元 | 0.298 | 14,316,101 美元 | 3,670,230 美元 | 0.698 |

| 9,466,818 美元 | 10,645,871 美元 | 1,179,053 美元 | 0.298 | 14,316,101 美元 | 3,670,230 美元 | 0.698 |

底线以指定方式风格化(灰色背景、粗体、斜体)。

所以我遇到的问题是:

  1. 为什么实际数据也没有打印在表格中?(可能是一个非常简单和愚蠢的错误,但 SAS 不是我的首选软件,所以我不知道我错过了什么。)

  2. 百分比变化似乎不准确。我将百分比变化计算为 (Y2-Y1)/Y1,因此对于总百分比变化,我需要使用其他列的总和 - (TY2 - TY1)/TY1(对吗?)。如果我的数学是正确的,那么百分比变化应该是 0.124,而不是 0.298。

    1179053 / 9466818 = 0.1245(1-2 年变化)

    3670230 / 10645871 = 0.3447(第 2-3 年变化)

    我知道表中的数字是通过添加列得到的,与其他列相同。有没有办法停止/改变它以使数学正确?

  3. 如果我在报告中将两个百分比变化列格式化为百分比(注释掉的行),而不是得到两个总百分比的 0.298 和 0.698,我分别得到 0 和 1。有谁知道那里发生了什么?在我正在使用的实际数据集中,我得到的值既不是百分比列的总和,也不是总百分比变化的计算,我不知道是什么数学导致了这个数字。

如果有人对这些问题有任何见解,我将不胜感激。谢谢!

4

1 回答 1

0
  1. 您将变量的角色设置为分析不显示,因此只显示摘要。将分析更改为显示。
  2. 我认为您需要在这里使用自定义计算,而不是依赖自动计算。不幸的是,对此一无所知。
  3. 您使用的是自定义格式,很难确切说明原因,但如果您使用 percent12.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;
于 2021-10-29T17:49:29.500 回答