2013-05-07 5 views
5

以前の非ブランク値と変数のブランク値を入力します。私のようなものであるデータセット使用していSAS 9.3

+----------+--------+-------+ 
| Variable | Level | Value | 
+----------+--------+-------+ 
| sexe  | men | 10 | 
|   | female | 20 | 
| age  | 0-20 |  5 | 
|   | 20-40 |  5 | 
|   | 40-60 | 10 | 
|   | >60 | 10 | 
+----------+--------+-------+ 

そして、私は以前を使用して、「ブランク」細胞を全うしたいと思いますがこのようなものを得るために空白でないセル。

+----------+--------+-------+ 
| Variable | Level | Value | 
+----------+--------+-------+ 
| sexe  | men | 10 | 
| sexe  | female | 20 | 
| age  | 0-20 |  5 | 
| age  | 20-40 |  5 | 
| age  | 40-60 | 10 | 
| age  | >60 | 10 | 
+----------+--------+-------+ 

DATAステップでは、多くの場合、LAG()機能でさまざまな可能性を試しました。アイデアは、セルが空のときに前の行を読んで、それを記入することでした。

DATA test; 
    SET test; 

    IF variable = . THEN DO; 
     variable = LAG1(variable); 
    END; 
RUN; 

そして、私は問題は良いの文字列が上位常に1行だけではありませんでした

+----------+--------+-------+ 
| Variable | Level | Value | 
+----------+--------+-------+ 
|   | men | 10 | 
| sexe  | female | 20 | 
|   | 0-20 |  5 | 
| age  | 20-40 |  5 | 
|   | 40-60 | 10 | 
|   | >60 | 10 | 
+----------+--------+-------+ 

を得ました。しかし、なぜSASが最初と3番目のラインに空白を入れたのか分かりません。私は "If variable =。"と言っていたので、この行を修正する必要はありませんでした。 私はこれをPythonまたはRのいくつかのforループで行う方法を知っていますが、SASで良い解決策を見つけることはできませんでした。

CALL SYMPUT」という変数と「RETAIN」という変数の内部に文字列を挿入しようとしましたが、機能しませんでした。

これを行うには、シンプルで洗練された方法が必要です。何か案が?

+0

便利な質問どうもありがとう。 – stan

答えて

18

IF内でLAGを使用することはできません.LAGは実際にはあなたの考え方には機能しません。 RETAINは私が言う正しい方法です:

DATA test; 
    SET test; 
    retain _variable; 
    if not missing(variable) then _variable=variable; 
    else variable=_variable; 
    drop _variable; 
RUN; 

遅れは実際に前のレコードに行き、値を取得しません。それはキューに設定され、LAGが呼び出されるたびに前面からレコードを取り出し、レコードをバックに追加します。これは、LAGが条件ブロック内にある場合、LAGが偽の条件で実行されず、キューを取得しないことを意味します。ブール値に関係なく真と偽の両方の条件を評価するIFN関数とIFC関数を使用できますが、この場合はおそらくRETAINは簡単でしょう。

+0

完全に動作し、説明は非常に明確です!どうもありがとうございました!あなたが私を手伝ってくれるのは二度目です。あなたはどうしていますか? RSSですべての質問を追跡しますか? – jomuller

+0

RSSは実際に更新するのがかなり遅いです(しかし、場合によってはそうです)。あなたはちょうど私が別の質問に答えた直後にそれを聞いたことが起こった:) – Joe

+0

便利な答え。どうもありがとう。 – stan

関連する問題