看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: SAS [程式問題]: 刪除資料以及篩選資料 [軟體熟悉度]: 新手(不到1個月) [問題敘述]: 各位高手好,目前在處理資料時遇到一些問題,希望有高手可以指點一下。 data: date ACC bs vol time 20010101 12 b 5 10:16:48.760000 20010107 12 s 1 12:00:05.230000 20010101 15 b 4 10:16:48.760000 20010107 15 s 1 12:00:05.230000 20010107 15 s 1 12:03:15.150000 20010107 15 b 1 12:05:25.150000 20020209 23 b 3 20030205 37 b 5 10:25:25.250000 20030704 37 s 3 11:02:15.230000 想問的是 (1)如果中間有資料時間為空白(不是 '.'),要如何刪除? (2)只想抓出03年的資料 (3)想要計算淨數量變化 也就是如果BS=B 則NETVOL為VOL的正值 若BS為S,則NETVOL為VOL的負值,然後ACQ是以各帳號分別累積加總 (3)想要的結果為: date ACC bs vol time NETVOL ACQ 20010101 12 b 5 10:16:48.760000 5 5 20010107 12 s 1 12:00:05.230000 -1 4 <---5減1 20010101 15 b 4 10:16:48.760000 4 4 <---又重新 20010107 15 s 1 12:00:05.230000 -1 3 <---4-1 20010107 15 s 1 12:03:15.150000 -1 2 <---3-1 20010107 15 b 1 12:05:25.150000 1 3 <---2+1 20030205 37 b 5 10:25:25.250000 5 5 20030704 37 s 3 11:02:15.230000 -3 2 [程式範例]: (1)我的指令為: data ata.test; set ata.data; if time=. then delete; run; (2)指令為 data ata.test; set ata.data; where date contains '2003'; run; (3)計算NETVOL指令為 data ata.test; set ata.data; if bs='b' then netvol= vol; else if bs='s' then netvol=-vol; run; 計算ACQ指令為 data ata.test; set ata.data ; RETAIN ACQ 0; ACQ=ACQ + vol; if acc^=lag(acc) then ACQ=vol; run;(這段是看板上學的) 希望有高手能指導一下哪邊寫錯,該如何寫,謝謝。 ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.60.179 ※ 編輯: summerslam 來自: 114.37.60.179 (02/26 22:29) ※ 編輯: summerslam 來自: 118.161.187.129 (02/28 01:10)