2010年3月20日 星期六

搬家囉~

歡迎各位舊雨新知繼續支持小站
http://kenshin528.pixnet.net/blog
這裡將不再更新,謝謝

2010年3月12日 星期五

好用的「同上」--RETAIN指令

很多人在處理資料的時候會有一個需求,就是希望同一欄位的值會等於上一個CASE的值。

例如這樣一筆資料

ObsIDyear
1A2001
2.2002
3.2003
4.2004
5B1993
6.1994
7.1995
8C1996
9.1997
10.1998
11.1999
12.2000

.的地方表示「如上」,也就是說我們希望資料在處理後會長成

ObsIDyear
1A2001
2A2002
3A2003
4A2004
5B1993
6B1994
7B1995
8C1996
9C1997
10C1998
11C1999
12C2000

這個樣子那要怎樣讓那些.變成「如上」呢?

這時候就要運用RETAIN指令了

RETAIN的語法基本上是 RETAIN <需要「如上」的變項> <一開始代進去的數值>

以本例來說就是 RETAIN ID 0。

SAS處理資料是一次處理一行,retain ID 0的意思是說,
當SAS在處理ID這個變項的時候,手裡先拿著0,
如果該變項沒有數值(ID為MISSING的時候),就把手上的0放進去,
如果ID裡面有數值,就把手上的0丟掉,把碰到的數值拿在手上,
如果下一行的ID裡面沒有數值,就把手上的數值填進去。

當SAS讀進第一行

1A2001
因為ID裡面有個A,所以手上就會拿一個A,
2.2002

然後在處理第二行的時候,因為ID裡面沒有數值,就會把手上的A丟進去,變成

2A2002

這樣,然後帶著A前往下一行。

當SAS碰到

5B1993
這行的時候,因為ID裡面是不是MISSING,而是B,所以手裡會改拿B,前往下一行。

如此這般就會把所以MISSING照著「如上」的方式填滿囉~是個很常用到的功能唷。