Re: [程式] SAS抓取曾發生過有特殊紀錄之資料

看板Statistics作者 (..)時間15年前 (2010/06/18 13:09), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《XYH (斐娟粉絲>//<)》之銘言: : [程式問題]: : 資料處理 : [軟體熟悉度]: : 低(1~3個月) : [問題敘述]: : 想要利用SAS找出所有住院資料中曾發生因某病住院的患者, : 其住院的所有筆數。 : 以精神分裂症為例,(用文字我敘述應該很難讓大家了解,畫圖說明好了) : 原始資料 希望資料 : -------- ---------------- : ID 住院原因 ID 住院原因 : A 精神分裂症 A 精神分裂症 : A 氣管炎 A 支氣管炎 : B 心臟病 C 支氣管炎 : B 糖尿病 \ C 精神分裂症 : B 肺炎 --------\ F 精神分裂症 : C 支氣管炎 --------/ F 糖尿病 : C 精神分裂症 / : D 肝硬化 選A、C、F : D 高血壓 : E 外傷 : E 肝炎 : F 精神分裂症 : F 糖尿病 : 目前規劃: : 原始資料 產出新檔案 : -------- ---------------- : ID 住院原因 NewID 住院原因 : A 精神分裂症 A 精神分裂症 : A 氣管炎 C 精神分裂症 : B 心臟病 F 精神分裂症 : B 糖尿病 \ \ : B 肺炎 ------\ ----\ : C 支氣管炎 ------/ ----/ : C 精神分裂症 / / : D 肝硬化 A、C、F 比較左邊兩ID : D 高血壓 : E 外傷 : E 肝炎 : F 精神分裂症 : F 糖尿病 : 我想要用產出的新檔案ID(即精神分裂症病史患者), : 和原始檔案比較, : 目前是打算用where選擇相同的ID : 但是遇到問題, : where只能比較字串如:"精神分裂症" : 似乎沒有辦法比較一大串資料檔之中的變數。 : 不知道有沒有人能夠給小弟一點幫助呢? : 感謝大家。 : [程式範例]: : DATA Schiz; : set Source; : set NewFile; : where ID=NewID; : Run; 根據你的例子,假設一個date: data hosp;input id $ 1-2 sick $ 3-15; cards; A 精神分裂症 A 支氣管炎 B 心臟病 B 糖尿病 B 肺炎 C 支氣管炎 C 精神分裂症 D 肝硬化 D 高血壓 E 外傷 E 肝炎 F 精神分裂症 F 糖尿病 ; run; 再篩選出有精神分裂症的id: data id;set hosp(where=( sick in ('精神分裂症')));keep id;run; 將篩選出來的id檔串回原本的檔案 proc sort data=hosp;by id; proc sort data=id;by id; data hosp1;merge hosp(in=a) id(in=b);by id;if a=b;run; hosp1就是你要的結果date -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.121.234

06/18 14:53, , 1F
感謝唷^o^
06/18 14:53, 1F
文章代碼(AID): #1C6lzqyz (Statistics)
文章代碼(AID): #1C6lzqyz (Statistics)