我使用的數據集是一樣的東西:填寫變量的空值與前一個非空值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 |
+----------+--------+-------+
我試圖與LAG()功能主要是數據步的各種可能性。這個想法是當單元格是空的時候讀取前一行並填充它。
DATA test;
SET test;
IF variable = . THEN DO;
variable = LAG1(variable);
END;
RUN;
我獲得
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| | men | 10 |
| sexe | female | 20 |
| | 0-20 | 5 |
| age | 20-40 | 5 |
| | 40-60 | 10 |
| | >60 | 10 |
+----------+--------+-------+
的問題是很好的字符串不是永遠只是一列上。但我不明白爲什麼SAS在第一和第三行放空。它不必修改這一行,因爲我說「如果變量=。」。 我知道如何在Python或R中用一些for循環來做到這一點,但我在SAS中找不到好的解決方案。
我試圖把字符串放在一個變量「CALL SYMPUT」,還有「RETAIN」,但它沒有工作。
必須有一個簡單而優雅的方式來做到這一點。任何想法?
有用的問題。非常感謝。 – stan 2014-05-10 13:48:59