Re: [程式] SAS 相關問題!!

看板Statistics作者 (謠指部總司令)時間9年前 (2015/05/24 04:43), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
相當具有挑戰性的問題,原po剛發文那一天我試著寫,但解決不了 不過擱了幾天今天突然靈光乍現就解出來了 首先考慮多重ID的範例資料: data temp; input ID OBS LONG; cards; 1101 1 0 1101 2 0 1101 3 0 1101 4 1 1101 5 1 1101 6 1 1101 7 1 1101 8 0 1101 9 0 1101 10 0 1101 11 1 1101 12 1 1101 13 1 1101 14 1 1102 1 0 1102 2 0 1102 3 0 1102 4 1 1102 5 1 1102 6 1 1102 7 1 1102 8 0 1102 9 0 1102 10 0 1102 11 1 1102 12 1 1102 13 1 1102 14 1 ; 程式的關鍵點是要SAS確定0->1或1->0的位置,所以用一個lag來處理 data temp1; set temp; by id; lag1 = lag(long); 但由於取lag後ID=1101的最後一個值會跑到ID=1102的第一個值 所以要讓所有obs=1變成missing if obs = 1 then lag1 = .; 然後設定一個新的變數change讓lag1不等於long時為1,其餘為0,因此這個change可以抓出 long數值變化時的位置 if lag1 ne . then change = (long ne lag1); 最後再用傳統垂直累加數值的方法把change累加起來存成一個新變數inout if first.id then inout = 0; inout + change; run; 最後這個inout變數就是原po要的進出次數了! ※ 引述《komol (科摩)》之銘言: : 資料如下: : (想要計算的變數) : ID OBS LONG 進出次數 : 1101 1 0 0 : 1101 2 0 0 : 1101 3 0 0 : 1101 4 1 1 : 1101 5 1 1 : 1101 6 1 1 : 1101 7 1 1 : 1101 8 0 2 : 1101 9 0 2 : 1101 10 0 2 : 1101 11 1 3 : 1101 12 1 3 : 1101 13 1 3 : 1101 14 1 3 : 小弟想要計算第四個變數 "進出次數" (每個觀察值都要標示進出次數(第幾次)) : 謝謝 : 感恩 : 如果是跟統計軟體有關請重發文章。 : 如果跟論文有關也煩請您重發文章。 : 請詳述問題內容,以利板友幫忙解答,過短文章依板規處置,請注意。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.191.32.43 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1432413812.A.C3C.html

05/24 11:34, , 1F
這個問題困擾我好久了! 超強者 感謝解決!!:)
05/24 11:34, 1F
文章代碼(AID): #1LOEPqmy (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1LOEPqmy (Statistics)