Re: [程式] SAS抓取曾發生過有特殊紀錄之資料
※ 引述《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
06/18 14:53, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):