Re: [問題] SAS資料處理問題

看板Statistics作者 (咖啡王子)時間17年前 (2009/04/05 17:35), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串5/5 (看更多)
data test; input a b; cards; 2 3 5 2 3 9 8 2 ; data a; set test; retain c 0; if _n_>=2 then c=a+b+c; run; 這樣就好了 XD ※ 引述《YcSJM (挖喜SJM)》之銘言: : ※ 引述《YcSJM (挖喜SJM)》之銘言: : : 想請教一個SAS資料處理的問題 : : 如果現在資料是這樣 : : a b c : : ---------- : : 2 3 0 : : 5 2 . : : 3 9 . : : 8 2 . : : c 從第二個開始想要是 a的第2個 + b的第2個 + c的第1個 : : c 的第三個類推下去是 a的第3個 + b的第3個 + c的第2個 : : 這樣程式改怎麼寫 : : 推 kenshin528:我覺得用IML或EXCEL做比較簡單 04/01 15:45 : : 推 wlsherica:excel+1 04/01 17:12 : : 推 tew:retain c 0; if _n_>=2 then c=a+b+c; 結束 04/01 17:31 : : 推 tew:如果資料筆數是100000筆 SAS還是比較簡單一點 XD 04/01 18:32 : : 推 wlsherica:請問_n_是甚麼呢??????? 04/01 21:50 : 感謝版主及版友的回答 : 因為資料有上千筆 而同樣的動作要重複好幾百次 : 上面的問題只是將問題簡單化而已 : 所以不考慮用excel做 : 試了版主的方法試了好幾次都沒辦法成功 : 後來改用iml處理 : 將處理的方法提供給以後有需要的版友參考看看 : 只是iml不是很熟 : 也許會有些多餘或者沒效率 : data test; : input a b; : cards; : 2 3 : 5 2 : 3 9 : 8 2 : ; : proc iml ; : use test; : read all var {a} into a; read all var {b} into b; : n=nrow(a); : c=j(n,1,0); : do j=2 to n; : c[j,1]=a[j,1]+b[j,1]+c[j-1,1]; : end; : create test1 var{a b c}; : append; : quit; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.32.225

04/05 20:34, , 1F
這樣子每讀一筆data就會重新assign c=0喔 code順序要換
04/05 20:34, 1F

04/05 20:35, , 2F
一下
04/05 20:35, 2F

04/05 23:59, , 3F
retain 的意思應該不是你說的這樣吧
04/05 23:59, 3F

04/06 00:00, , 4F
retain c 0只是將C變項設起始值為0 保留給下一個觀察值用
04/06 00:00, 4F

04/06 00:00, , 5F
不會每次都設0
04/06 00:00, 5F

04/06 00:16, , 6F
或者是 長期以來 我誤解這個語法 OTL
04/06 00:16, 6F

04/06 10:42, , 7F
恩 剛剛試了一下 是我誤解了XD
04/06 10:42, 7F
文章代碼(AID): #19s7jAmD (Statistics)
文章代碼(AID): #19s7jAmD (Statistics)