授業内容


第20回(第7回) 行列の表示 12/01
20 行列の表示

前回の課題の正答例を書いておきます。

【新規プログラム】
proc iml;
reset print;
/**********************/
/***** テーブル *****/
/* A:10月の売上  */
/* B:11月の売上  */
/* C:価格テーブル */
/**********************/
/**********************/
A = {29 3 104 13,
   19 1 78 64,
   42 2 100 15};
B = {20 4 98 11,
   20 3 82 52,
   32 6 100 24};
C = {4800 1000 1480 2000,
   4800 1000 1380 1500,
   4000 1000 1200 1800};
D = A + B;*2ヶ月の売上個数計;
DSUM = D[+,];*商品ごとの計;
E = D # C;*2ヶ月の各売上額;
ESUM = E[,+];*各支店の売上;
SUMALL = E[+];*3支店計;
quit;

【プログラム末尾】

ただ、このプログラムを実行したとしても、あまり見た目が良いものは出てきません。それはアウトプット画面に出てくる行列に、日本語の説明が付いていないからです。各セルが何を表すのか準備してあげましょう。

siten = {'天神店','博多店','マリノア'};*支店名;
goods = {'商品1','商品2','商品3','商品4'};*商品名;

SAS/IMLでは、文字データも数値データと同じように扱うことができますが、「'(クォート:shift+7)」で、その両側をくくってあげる必要があります。

この企業の2ヶ月の各商品の売上額で表現してみましょう。ただし、あまりアウトプットに計算が並んでも、見づらいだけなので、必要な所だけプリントの命令を使うようにしましょう。

【新規プログラム】

proc iml;
reset noprint;*アウトプットに計算過程を載せない;
/**********************/
/***** テーブル *****/
/* A:10月の売上  */
/* B:11月の売上  */
/* C:価格テーブル */
/**********************/
/**********************/
A = {29 3 104 13,
   19 1 78 64,
   42 2 100 15};
B = {20 4 98 11,
   20 3 82 52,
   32 6 100 24};
C = {4800 1000 1480 2000,
   4800 1000 1380 1500,
   4000 1000 1200 1800};
D = A + B;*2ヶ月の売上個数計;
DSUM = D[+,];*商品ごとの計(奇数課題);
E = D # C;*2ヶ月の各売上額;
/******** 以下が追加部分 *********/
SITEN = {'天神店','博多店','マリノア'};*支店名;
GOODS = {'商品1','商品2','商品3','商品4'};*商品名;
MATTRIB E rowname = SITEN
colname = GOODS
label = '2ヶ月の各売上額'
format = 10.0;*文字数を10に設定;
print E;
quit;

【プログラム末尾】

ここで、行列に名前を入れるのに、MATTRIBステートメントを使っています。これは、MATRIX(行列)のATTRIBUTION(特性)を表すステートメントです。そこで、rowname(行の名前)とcolname(列の名前)を指定してあげて、その表をlabel(これはそのままラベルですね)によって、『2ヶ月の各売上額』と名前を付けてあげています。formatは、文字の桁数を指定しています。10.0で10桁の数、小数点以下を0桁で設定するという意味になります。


今週の課題
前回と今回の情報を元に、次の表を作るプログラムを作って提出。まずは合計額を出して、それを表の形にくっ付けることを考えましょう。

2ヶ月の売上額

商品1

商品2

商品3

商品4

支店計

天神店

235200

7000

298960

48000

589160

博多店

187200

4000

220800

174000

586000

マリノア

296000

8000

240000

70200

614200

商品計

718400

19000

759760

292200

1789360


一つ前の週へ 先頭に戻る 一つ後の週へ


ホーム シラバス 授業計画 授業へのQ&A コンピューター初心者の皆さんへ