input cardsでデータを作るのが面倒で、僕は
data A0;
X='い';output;
X='ろ';output;
X='は';output;
run;
という書き方をよくします。SASの公式なテキストか何かでも、見たことがあるので、必ずしも筋悪ではないのかもしれません。
一行分の変数に値を割り当てるごとにoutputでオブザベーションを起こしています。
1行書いたらコピペして値を変えるだけなので、小さいデータセットだととても楽です。
ただ、よくあるのが
data A1;
X='い';output;
X='ろ';output;
X='いろは';output;
run;
みたいに書いてしまうと、
最初に格納される値で自動的に長さが設定されてしまうので、LENGTHが$2になり
3行目の値 'いろは' が文字切れします。手抜きするなら1行目に一番長い文字をあてればいいですが、まあ、素直にlengthステートメントうてばいいですね。
さて、ちょっとした問題ですが
data A2;
X=1;Y='A';Z='い';output;
X=2;Y='B';output;
X=3;output;
run;
を実行すると結果はどうなるでしょうか??
3行目のY、2・3行目のZが欠損値になると思った方は残念ながら不正解です。
新たに値を入れない限り、未割当の変数は、保持されます。
0 件のコメント:
コメントを投稿