Statistics 板


LINE

以下是很不正確的分解動作XD 因為SAS DATA STEP一次只讀一行CASE 但是這樣子舉例比較方便 囧~ ※ 引述《kenshin528 (成立奧凶帝國!!)》之銘言: : DATA test; : SET origin; /*原始檔*/ 做完這個步驟的資料(也就是原始資料) Obs ID year DUM1 1 A 2001 0 2 A 2002 1 3 A 2003 0 4 A 2004 0 5 B 1993 1 6 B 1994 0 7 B 1995 0 8 C 1996 0 9 C 1997 0 10 C 1998 1 11 C 1999 1 12 C 2000 0 : IF dum1 = 1 THEN dum2 = 1;/*產生一個新的變項作為對照組*/ Obs ID year DUM1 dum2 1 A 2001 0 . 2 A 2002 1 1 3 A 2003 0 . 4 A 2004 0 . 5 B 1993 1 1 6 B 1994 0 . 7 B 1995 0 . 8 C 1996 0 . 9 C 1997 0 . 10 C 1998 1 1 11 C 1999 1 1 12 C 2000 0 . : IF first.id THEN dum2 = dum1; 因為你有些變項第一個不是0 所以只好再補一條敘述 Obs ID year DUM1 dum2 1 A 2001 0 0 2 A 2002 1 1 3 A 2003 0 . 4 A 2004 0 . 5 B 1993 1 1 6 B 1994 0 . 7 B 1995 0 . 8 C 1996 0 0 9 C 1997 0 . 10 C 1998 1 1 11 C 1999 1 1 12 C 2000 0 . : RETAIN dum2 0; SAS處理資料是一次處理一行 retain dum2 0的意思是說, 當我在處理DUM2這個變項的時候,手裡先拿著0, 如果該變項沒有數值(DUM2為MISSING的時候),就把手上的0放進去, 如果那個dum2裡面有數值,就把手上的0丟掉,把碰到的數值拿在手上, 如果下一行的dum2裡面沒有數值,就把手上的數值填進去。 by id的意思是說,遇到新的ID,就把之前拿到的數字丟掉,從0開始。 分解動作如下 手裡>>0 Obs ID year DUM1 dum2 1 A 2001 0 0 <<有數值 就把手裡的0丟掉,把裡面的0拿起來 手裡>>0 2 A 2002 1 1 <<又有數值,把手裡的0丟掉,把1拿起來 手裡>>1 3 A 2003 0 . <<挖,裡面沒有東西,就把1丟進去 3 A 2003 0 1 <<然後又把1拿起來 手裡>>1 4 A 2004 0 . <<又沒東西,就把手裡的1丟進去 4 A 2004 0 1 <<把1拿起來 手裡>>0 5 B 1993 1 1 <<ID換了,所以手裡要拿0,然後又遇到1所以把1拿起來 >>以下以此類推@@ 6 B 1994 0 . 7 B 1995 0 . 8 C 1996 0 0 9 C 1997 0 . 10 C 1998 1 1 11 C 1999 1 1 12 C 2000 0 . : BY ID; : dum1=dum2; /*讓舊變項等於新變項*/ : DELETE dum2; /*刪去新變項*/ 上面兩行不用解釋吧? 就是把新的變項換成你要的DUM1而已 : RUN; : 你試試看吧 感覺起來應該有更簡單的寫法 : ※ 引述《paochien (煩躁的調子)》之銘言: : : ------------------------------------------------------------------------ : : [軟體程式類別]: : : SAS : : [程式問題]: : : 資料處理 : : [軟體熟悉度]: : : 新手(不到1個月) : : [問題敘述]: : : 我的資料是長這樣 : : Obs ID year DUM1 : : 1 A 2001 0 : : 2 A 2002 1 : : 3 A 2003 0 : : 4 A 2004 0 : : 5 B 1993 1 : : 6 B 1994 0 : : 7 B 1995 0 : : 8 C 1996 0 : : 9 C 1997 0 : : 10 C 1998 1 : : 11 C 1999 1 : : 12 C 2000 0 : : Dum1是利用其他變數做為criteria而得的一個dummay variable : : 現在的問題是想要把同一間公司只要dum1是1之後的所有年份都該為1 : : 就會變成 : : Obs ID year DUM1 : : 1 A 2001 0 : : 2 A 2002 1 : : 3 A 2003 1 : : 4 A 2004 1 : : 5 B 1993 1 : : 6 B 1994 1 : : 7 B 1995 1 : : 8 C 1996 0 : : 9 C 1997 0 : : 10 C 1998 1 : : 11 C 1999 1 : : 12 C 2000 1 : : 我翻了一些書也找了一些網站,是過lag來加減看看 : : 可是最後的結果都會有一些被漏掉沒改成1 : : 不知道各位前輩有沒有比較好的辦法可以指點一下<(_ _)> : : 新手很笨的問題請多包涵Orz -- (C)lass 【 分組討論區 】 11 卡漫夢工廠 卡通, 漫畫, 動畫 [Ckmike] 4 C_J_Artist 作家 Σ日本漫畫家專區 [Ckmike] 10 TakahasiShin 作家 ◎****高橋真作品討論版**** kenshin528 http://kenshinsasstory.blogspot.com/ SAS Story --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.92.238
1F:推 paochien:好詳細的解釋!!! 真的很感謝你>///< 03/11 21:02
2F:→ kenshin528:有看懂就好XD~ 03/11 21:13
3F:→ kenshin528:最後要用DROP丟變項 囧 03/12 10:36







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP