Re: [問題] SAS如何抓取上一筆資料

看板Statistics作者 (鬍鬚)時間12年前 (2013/03/18 20:39), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串6/6 (看更多)
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

03/18 23:34, , 1F
retain是保留的意思, 但在sas中, 此指令只能用在新變數上
03/18 23:34, 1F

03/18 23:35, , 2F
第二行的意思是, 如果name不是空的, 也就是說, 不是"."時
03/18 23:35, 2F

03/18 23:36, , 3F
剛剛利用retain建立的新變數b, 就會等於name這個變數
03/18 23:36, 3F

03/18 23:37, , 4F
接著利用retain保留的功能, 把b="."的值, 保留下來
03/18 23:37, 4F

03/19 00:28, , 5F
name=b; /* 【說明】不懂??? */
03/19 00:28, 5F

03/19 00:28, , 6F
drop b; /* 【說明】刪掉b欄位 */
03/19 00:28, 6F

03/19 00:29, , 7F
這兩個還是不太懂!!
03/19 00:29, 7F

03/19 00:29, , 8F
語法分開看都看得懂,合起來就覺得怪怪的!
03/19 00:29, 8F

03/19 00:39, , 9F
另外,這個b是甚麼呢?!變數欄?!資料集?
03/19 00:39, 9F

03/19 21:49, , 10F
b是變數名稱阿 你可以不要drop b,看一下內容是甚麼
03/19 21:49, 10F
文章代碼(AID): #1HHmhr0b (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1HHmhr0b (Statistics)