1

.LAST 変数の総計しかない場合、現在の合計を作成する方法を見つけようとしています。私が求めているものを少し明確にするサンプルデータセットを作成しました:

DATA SALES_DATA; 
    INPUT REGION_ID STORE_ID YEAR SALES; 
    DATALINES; 
        1   1   2000    .
        1   1   2001    .
        1   1   2002    .
        1   1   2003    40
        1   2   1977    .
        1   2   1978    .
        1   2   1979    .
        1   2   1980    .
        1   2   1981    12
        2   3   1999    .
        2   3   2000    .
        2   3   2001    .
        2   4   2002    17
        3   4   1956    .
        3   4   1957    22

;

ご覧のとおり、店舗が最後に営業していたときのデータしかありません。これには、前年度のすべての売上が含まれます。売上高が完全に線形で、前年比で加算されると仮定すると、SAS に STORE_ID.LAST 値を取得し、それをデータの年数で割って STORE_ID.FIRST の SALES フィールドに入れるように指示するにはどうすればよいでしょうか? 最後のフィールドから最初のフィールドに値を取得する方法を理解したら、通常の現在の合計を実行することを計画しています (カウントで割った後、次のような方法で作成できます:

DATA SALES; 
    SET SALES; 
    BY REGION_ID STORE_ID; 
    IF FIRST.STORE = 1 THEN 
        COUNT =0;
        COUNT+1; 
run;

したがって、理想的にはファイナル テーブルは次のように始まります。

DATA SALES_DATA; 
INPUT REGION_ID STORE_ID YEAR SALES; 
DATALINES; 
    1   1   2000    10
    1   1   2001    20
    1   1   2002    30
    1   1   2003    40

...

PROC EXPAND を調べましたが、私のケースでは機能しませんでした。どんな提案も大歓迎です!

4

2 に答える 2

3
/* 最初に年間売上高を計算します */
proc sql ;
  テーブルの平均売上高を次のように作成します
  region_id, store_id, sum(sales) / count(year) を YEARLY_SALES として選択
  販売データから
  region_id、store_id でグループ化
  region_id、store_id で並べ替えます。
終了する ;

/* 元のデータにマージします */
データ yearcalc ;
  sales_data のマージ
        手段販売;
  region_id による store_id ;
  first.store_id の場合、n = 0 ;
  n + 1 ;
  NEW_SALES = n * YEARLY_SALES ;

  n をドロップします。
走る ;
于 2014-02-03T09:15:05.287 に答える