Re: [問題] SAS 資料處理
經驗分享,有誤或有更簡潔的用法請指正
※ 引述《summerslam (BB)》之銘言:
: 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
: 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 則VOL為正的
: 若BS為S,則VOL為負值,然後加總數量,以ACC來分別計算
: (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
: 20010101 15 b 4 10:16:48.760000 4 4
: 20010107 15 s 1 12:00:05.230000 -1 3
: 20010107 15 s 1 12:03:15.150000 -1 2
: 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;
time屬性是文字吧? 「.」是數值missing的用法
IF time='' THEN DELETE;
中間不用空白
: (2)指令為
: data ata.test;
: set ata.data;
: where date contains '2003';
: run;
DATA ata.test;
SET ata.data;
IF SUBSTR(date,1,4)='2003';
RUN;
SUBSTR: 取date變項第一位到第四位的內容
: (3)計算NETVOL指令為
: 計算ACQ指令為
: data ata.test;
: set ata.data ;
: RETAIN ACQ 0;
: ACQ=ACQ + vol;
: if acc^=lag(acc) then ACQ=vol;
: run;(這段是看板上學的)
RETAIN的話則是每次讀進一筆觀察值的時候那個變項值會是上一筆觀察值的值
而且看你說想要的狀況跟ACC好像沒有關係?
看你想要結果的意思是要負的才減去,正的就保留?
DATA ata.test;
SET ata.test;
IF bs='b' THEN ACQ=vol;
ELSE IF bs='s' THEN ACQ+(-vol);
RUN;
用的是 http://0rz.tw/9Ya7P SUM statement
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.71.94.31
推
02/28 00:46, , 1F
02/28 00:46, 1F
→
02/28 00:47, , 2F
02/28 00:47, 2F
→
02/28 00:47, , 3F
02/28 00:47, 3F
推
02/28 00:57, , 4F
02/28 00:57, 4F
→
02/28 00:59, , 5F
02/28 00:59, 5F
→
02/28 01:00, , 6F
02/28 01:00, 6F
→
02/28 01:11, , 7F
02/28 01:11, 7F
推
02/28 13:51, , 8F
02/28 13:51, 8F
→
03/01 01:09, , 9F
03/01 01:09, 9F
→
03/01 23:05, , 10F
03/01 23:05, 10F
抱歉我現在仔細看才看到你有推說要以帳號分
所以以帳號分,帳號裡的b就要加,s就要減
PROC SORT DATA=ata.test; BY acc date;
RUN;
DATA ata.test;
SET ata.test;
BY acc;
IF first.acc THEN ACQ=0;
acq+netvol;
RUN;
這樣看看
※ 編輯: stvene 來自: 114.32.31.217 (03/03 02:13)
→
03/03 17:22, , 11F
03/03 17:22, 11F
討論串 (同標題文章)