作者a3115111500 (鬍鬚)
看板Statistics
標題Re: [問題] SAS如何抓取上一筆資料
時間Mon Mar 18 20:39:15 2013
tew咖啡王子您好!!
我不太懂每行語法的邏輯,
不知道能否請教之,
非常感謝您!!謝謝!
data a; /* 【說明】設立資料集「a」 */
set a; /* 【說明】讀入資料集「setF0701all22」 */
retain b; /* 【說明】不懂??? */
if name^='' then b=name; /* 【說明】不懂??? */
name=b; /* 【說明】不懂??? */
drop b; /* 【說明】刪掉b欄位 */
run; /* 【說明】執行 */
※ 引述《tew (咖啡王子)》之銘言:
: 試試看這個語法
: data a;
: set a;
: retain b;
: if name^='' then b=name;
: name=b;
: drop b;
: run;
: ※ 引述《jackychou (嘆這世間無奈好多)》之銘言:
: : 舉例有一群資料如下:
: : NAME DATE WEIGHT
: : ALAN 20100308 69.1
: : . 20100309 68.8
: : . 20100310 68.9
: : . 20100311 68.7
: : BRUCE 20100308 65.7
: : . 20100309 66.0
: : . 20100310 65.9
: : . 20100311 66.0
: : . 20100312 66.2
: : CARL 20100308 67.7
: : . 20100309 67.9
: : . 20100310 68.1
: : . 20100311 68.2
: : . 20100312 68.1
: : 請問有什麼指令可以把每個名字下面的"."
: : 帶入上一筆資料?
: : (使ALAN下面三個"." BRUCE跟CARL下面四個"."分別帶入ALAN BRUCE CARL)
: : 之前用過STATA記得是 _NAME=_NAME-1 (如果沒記錯的話 可能有記錯 Orz)
: : SAS有類似的功能嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.90.116
1F:推 lsshno1:retain是保留的意思, 但在sas中, 此指令只能用在新變數上 03/18 23:34
2F:→ lsshno1:第二行的意思是, 如果name不是空的, 也就是說, 不是"."時 03/18 23:35
3F:→ lsshno1:剛剛利用retain建立的新變數b, 就會等於name這個變數 03/18 23:36
4F:→ lsshno1:接著利用retain保留的功能, 把b="."的值, 保留下來 03/18 23:37
5F:→ a3115111500:name=b; /* 【說明】不懂??? */ 03/19 00:28
6F:→ a3115111500:drop b; /* 【說明】刪掉b欄位 */ 03/19 00:28
7F:→ a3115111500:這兩個還是不太懂!! 03/19 00:29
8F:→ a3115111500:語法分開看都看得懂,合起來就覺得怪怪的! 03/19 00:29
9F:→ a3115111500:另外,這個b是甚麼呢?!變數欄?!資料集? 03/19 00:39
10F:→ imaltar:b是變數名稱阿 你可以不要drop b,看一下內容是甚麼 03/19 21:49