私はこのデータセットを持っています(作成された例ですが、同じ構造です):
data have;
infile datalines delimiter=',';
length country city measure $50.;
input country $ city $ level measure $ mdate total;
informat mdate date9.;
format mdate date9.;
datalines;
England,London,1,Red doors opened,24MAR2014,4
England,London,1,Green doors opened,24MAR2014,6
England,London,2,Doors closed,24MAR2014,7
England,London,1,Red doors opened,25MAR2014,5
England,London,1,Blue doors opened,25MAR2014,4
England,London,1,Green doors opened,25MAR2014,3
England,London,2,Doors closed,25MAR2014,6
England,Manchester,1,Red doors opened,24MAR2014,3
England,Manchester,2,Doors closed,24MAR2014,1
England,Manchester,2,Doors closed,25MAR2014,4
Scotland,Glasgow,1,Red doors opened,24MAR2014,4
Scotland,Glasgow,1,Red doors opened,25MAR2014,3
Scotland,Glasgow,1,Green doors opened,25MAR2014,2
Scotland,Glasgow,2,Doors closed,25MAR2014,4
;;;;
run;
国/都市ごとに「開いたドア」を1日ごとに出力し、開いたドアの小計を出してから、閉じたドアを出力し、閉じたドアから開いたドアを差し引いて「バランス」(国/都市ごと)を求めます。各国の最後に、各国の残高 (1 日あたり) を合計する 1 つの行が必要です。
したがって、上記は次のようなものになります。
Country + City + Measure + 24MAR2014 + 25MAR2014
---------+------------+--------------------+-----------+----------
England + London + Red doors opened + 4 + 5
+ + Green doors opened + 6 + 3
+ + Blue doors opened + . + 4
+ + TOTAL DOORS OPENED + 10 + 12
+ + Doors closed + 7 + 6
+ + BALANCE + -3 + -6
+ Manchester + Red doors opened + 3 + .
+ + TOTAL DOORS OPENED + 3 + .
+ + Doors closed + 1 + 4
+ + BALANCE + -2 + 4
+ ALL + BALANCE + -5 + -2
Scotland + Glasgow + Red doors opened + 4 + 3
+ + Green doors opened + . + 2
+ + TOTAL DOORS OPENED + 4 + 5
+ + Doors closed + . + 4
+ + BALANCE + -4 + -1
+ ALL + BALANCE + -4 + -1
故意に残したので、すべての測定値が各インスタンスに表示されるわけではなく、Doors Closed の合計が表示されない場合があります。CAPS の行は で追加したいものですPROC REPORT
。つまり、元のデータにはありません。
を使用して基本的なレイアウトを作成しましたが、PROC REPORT
必要に応じて小計の挿入を開始する場所がわかりません。「レベル」変数を追加して、注文/グループ化する何かを試してみました。
出力ページごとに 1 つの国が必要で、行はグループごとにその順序で維持されます。つまり、XXX ドアが開いた、TOTAL DOORS OPENED、ドアが閉じた、BALANCE です。
これまでのところ、これは私がやったことです:
proc report data=have out=proc;
by country;
columns city level measure mdate,total;
define city / group;
define level / group noprint;
define measure / group;
define mdate / across;
define total / analysis sum;
compute before level;
endcomp;
compute after level;
if level = 2 and break = '_level_' then do;
measure = 'TOTAL DOORS OPENED';
end;
endcomp;
run;
レベル変数を使用して何かを実行できる必要があることはわかっているので、その前後にいくつかの計算ブロックを追加し、出力データセットを調べました。「TOTAL DOORS OPENED」の値を追加しようとしましたが、うまくいきません。
正直なところ、私は を使い始めたばかりなPROC REPORT
ので、これは私の快適ゾーンから少し外れています。
助けてくれてありがとう。質問が明確でない場合はお知らせください。