[問題] SAS計算變數的問題

看板Statistics作者 (sipa)時間16年前 (2008/06/04 17:39), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
1. (buy_sell=1是買入、3是持有而2是賣出。) 我需要找出每一天的交易資料對應的上一次賣出之股票資料(例:股票代號) 因為有可能同一天賣出兩支以上的股票,要如何在1/5後的每一天都記錄 上次賣出之股票代號(LSS)也就是1/5賣出的2303和3864?(資料型態如下) 我目前想到的作法是先把buy_sell=2的資料抽出來,然後記錄lag(stock_id), 這樣就知道每次賣出股票時,上次賣出的股票是哪一支。 因為只要日期比最靠近的賣出時點還早的資料, 所對應的上次賣出股票代號就會跟該賣出時點資料所記錄的一樣, 因此只要將完整的交易資料按照trade_date排序, 然後根據每一筆buy_sell=2的時間點,只要trade_date比它早的就跟它分成同組, 爾後再按照此組別,將一開始只有buy_sell=2的資料檔也加註同樣的組別, 然後再合併在一起,其他交易資料就能記錄上次賣出的股票代號。 但是問題會出現在如果一天賣出兩支以上的股票,要如何同時記錄? Trade_date Stock_id Buy_date Sell_date buy_sell volume price LSS \ 1998/1/1 2303 1998/1/1 1998/1/5 1 1000 20 N/A \ 1998/1/2 2303 1998/1/1 1998/1/5 3 1000 15 N/A \ 1998/1/3 2303 1998/1/1 1998/1/5 3 1000 24 N/A \ 1998/1/4 2303 1998/1/1 1998/1/5 3 1000 27 N/A \ 1998/1/5 2303 1998/1/1 1998/1/5 2 1000 30 N/A \ 1998/1/3 3864 1998/1/3 1998/1/5 1 2000 25 N/A \ 1998/1/4 3864 1998/1/3 1998/1/5 3 2000 20 N/A \ 1998/1/5 3864 1998/1/3 1998/1/5 2 2000 15 N/A \ 1998/1/4 2578 1998/1/4 1998/1/10 1 3000 40 N/A \ 1998/1/5 2578 1998/1/4 1998/1/10 3 3000 35 N/A \ 1998/1/6 2578 1998/1/4 1998/1/10 3 3000 30 2303\ 3864\ 1998/1/7 2578 1998/1/4 1998/1/10 3 3000 33 2303\ 3864\ 1998/1/8 2578 1998/1/4 1998/1/10 3 3000 45 2303\ 3864\ 1998/1/9 2578 1998/1/4 1998/1/10 3 3000 48 2303\ 3864\ 1998/1/10 2578 1998/1/4 1998/1/10 2 3000 50 2303\ 3864\ 2. 計算上次賣出股票的後續報酬 記錄上次賣出的股票之後,再讀進每一天該股票的價格, 進一步計算上次賣出股票的當日市場報酬, 報酬是和賣出價作比較。 主要的問題還是在上次同日賣出不只一支股票時,會有問題! Trade_date Stock_id buy_sell volume price LSS LSSP PostR \ 1998/1/1 2303 1 1000 20 N/A N/A N/A \ 1998/1/2 2303 3 1000 15 N/A N/A N/A \ 1998/1/3 2303 3 1000 24 N/A N/A N/A \ 1998/1/4 2303 3 1000 27 N/A N/A N/A \ 1998/1/5 2303 2 1000 30 N/A N/A N/A \ 1998/1/3 3864 1 2000 25 N/A N/A N/A \ 1998/1/4 3864 3 2000 20 N/A N/A N/A \ 1998/1/5 3864 2 2000 15 N/A N/A N/A \ 1998/1/4 2578 1 3000 40 N/A N/A N/A \ 1998/1/5 2578 3 3000 35 N/A N/A N/A \ 1998/1/6 2578 3 3000 30 2303 28 (1000/3000)*(28-30)/30 \ 3864 17 +(2000/3000)*(17-15)/15\ 1998/1/7 2578 3 3000 33 2303 25 (1000/3000)*(25-30)/30 \ 3864 13 +(2000/3000)*(13-15)/15\ 1998/1/8 2578 3 3000 45 2303 23 (1000/3000)*(23-30)/30 \ 3864 15 +(2000/3000)*(15-15)/15\ 1998/1/9 2578 3 3000 48 2303 27 (1000/3000)*(27-30)/30 \ 3864 18 +(2000/3000)*(18-15)/15\ 1998/1/10 2578 2 3000 50 2303 24 (1000/3000)*(24-30)/30 \ 3864 19 +(2000/3000)*(19-15)/15\ 兩個頗複雜的問題,想請版上的強者們幫忙! 拜託了 >"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.234
文章代碼(AID): #18HcBjDZ (Statistics)