授業内容
2 SASデータセット
2.3 データセットの加工
前回作ったデータセット"cmp00"の中で、小遣いを表す"allw"の項目は、「円」の単位が使われています。この項目を「万円」の単位で表してみましょう。
data cmp00;
input samno hght wght ft atnd allw ;
allw = allw / 10000 ;
cards;
データ行(略してあります)
;
run;
(以下略)
3行目に新しい命令を追加しています。
いままで、"allw"で表していたものを、同じ"allw"を使って新しい形で表してやっています。このように、データを生成する過程で、新しい変数を作成することができます。このような命令を割り当てステートメントと呼びます。割り当てステートメントは、INPUTまたはINFILEステートメントの後で使われます。割り当てステートメントを使うと、単位の調整や数値の補正が簡単にできます。
この
allw = allw / 10000 ;
という式は、数学的には奇異なものに見えてしまうと思いますが、プログラムをしていく上ではこのような事が可能になります。つまり、プログラムというものは左辺の変数が、右辺によって評価されているからこのような事が可能になるのです。「=(イコール・等号)」を使うことによって、右辺のものを左辺の変数に置き換え(割り当て)ているのです。もちろん、左辺は別の新しい変数名に置き換えることも可能です。
完成すると次のような表が出来上がっているはずです。
OBS SAMNO HGHT WGHT FT ATND ALLW 1 1 157.0 . 24.0 2 . 2 2 177.7 76.5 26.0 4 10 3 3 156.5 51.0 24.0 4 6 4 4 173.0 59.0 27.5 4 3 5 5 160.0 49.0 24.0 5 0.25 6 6 165.0 53.0 26.5 4 2
割り当てステートメントで演算子(算術演算子)として使用できる記号の一覧を下につけます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プログラムを作成するときに、現在自分が何をしようとしているのか、プログラム中のその部分が何をしようとしているのかを表すためには、当然説明書きが必要になります。前回のプログラムの12行目および16行目は、そんな説明書き(コメント)の仕方が書いてあります。コメントは、スペースを入れられる場所ならどこに入れても構いません。
まず、コメント1は短いコメントに便利なやり方を書いています。
「*(アスタリスクまたはスター)」で文章を始めることによってそのステートメントを実行させないことができます。ただし、そのステートメントを終了させるためには必ず「;(セミコロン)」で、閉じてやらなければなりません。「*」は元々掛け算の記号ですが、このように使うこともできます。
次に、コメント2はひとかたまりのコメントを記述するときに便利なやり方を書いています。
「/*(スラッシュ アスタ)」で初めて、「*/(アスタ
スラッシュ)」で閉じる方法です。これは通常のステートメントに対する記述と異なり「;」で閉じる必要はありません。例えば以下のようなコメントの書き方も可能になります。
/******************/
/******************/
/**** comment2 ****/
/******************/
/******************/
このときも、この5行分のコメントはプログラムの実行上は無視されることになります。
プログラムをする上でのヒント2
前回記入してもらったプログラムには、プロシジャステップ(「proc」で始まり「run」で終わる部分)の記入方法として、2つのパターンが書いてあります。
1つは「proc
means」で始まるような、ステートメントを縦に複数行に渡って並べる方法。
もう1つは「proc
plot」で始まるような、ステートメントを横に並べる方法です。
これはどちらの方法を取っても構いません。
これは、データステップでも同じ事がいえますが、「;」で一旦ステートメントが終了している場合、見た目の改行はあまり意味がないからです。プログラムは連続した形で並んでいてそれを「;」で切っているからです。各自の確認しやすいように書いてもらえれば結構です。
imput (nの間違い)
card (sが足りない)
prinnto (ローマ字打ち)
procprint (予約語(キーワード)の間にスペースがない)
ログ画面できちんとチェックしましょう。
必ず件名の頭に「DA」を入れるようにしてください。
また、本文の先頭、または末尾に学籍番号(名前も入っているともっとうれしい)を付けるようにしてください。