文字列内の特定のテキストを抽出する方法がわかりません。私のデータセットは、識別されていない電子健康記録から引き出され、患者が処方されたすべての医薬品のリストを含んでいます。しかし、私は別のテーブルにある特定の薬のリストだけに関心があります。各セルには、投薬、用量、およびフォームの名前(タブ、キャップなど)[画像を参照]があります。この情報の多くは私の分析には重要ではありません。私は自分のリストに合った投薬名を抽出するだけです。また、各文字列から最初の単語を抽出すると便利です(ほとんどの場合)ので、薬の名前です。SASの特定の部分文字列の頻度
私はサブストリングを引き出すさまざまな方法を検討しましたが、私のニーズを満たすものはほとんど見つかりませんでした。どんな助けでも大歓迎です。
ありがとうございました。
Data DRUGS;
infile datalines flowover;
length drug1-drug69 $20;
array drug[69];
input (drug1-drug69)($);
datalines;
AMITRIPTYLINE
AMOXAPINE
BUPROPION
CITALOPRAM
CLOMIPRAMINE
DESIPRAMINE
DOXEPIN
ESCITALOPRAM
FLUOXETINE
FLUVOXAMINE
IMIPRAMINE
ISOCARBOXAZID
MAPROTILINE
MIRTAZAPINE
NEFAZODONE
NORTRIPTYLINE
PAROXETINE
PHENELZINE
PROTRIPTYLINE
SERTRALINE
TRANYLCYPROMINE
TRAZODONE
TRIMIPRAMINE
VENLAFAXINE
AMITRIP
ELEVIL
ENDEP
LEVATE
ADISEN
AMOLIFE
AMOXAN
AMOXAPINE
DEFANYL
OXAMINE
OXCAP
WELLBUTRIN
BUPROBAN
APLENZIN
BUDEPRION
ZYBAN
CELEXA
ANAFRANIL
NORPRAMIN
SILENOR
PRUDOXIN
ZONALON
LEXAPRO
PROZAC
SARAFEM
LUVOX
TOFRANIL
TOFRANIL-PM
MARPLAN
LUDIOMIL
REMERON
REMERONSOLTAB
PAMELOR
PAXIL
PEXEVA
BRISDELLE
NARDIL
VIVACTIL
ZOLOFT
PARNATE
OLEPTRO
SURMONTIL
EFFEXOR
DESVENLAFAXINE
PRISTIQ
;;;;
run;
Data DM4_;
if _n_=1 then set DRUGS;
array drug[69];
set DM4;
do _i = 1 to countw(Description,'().,');
_med = scan(Description,_i,'().,');
_whichmed = whichc(_med, of drug[*]);
if _whichmed > 0 then leave;
end;
run;
Data DM_Meds (drop = drug1-drug69 _i _med _whichmed);
Set DM4_;
IF _whichmed > 0 then anti = _med;
else anti = ' ';
run;
あなたがいないので、あなたはすでに試したのメソッドの数」を言及するのは良い考えですそれらをもう一度答えとして得る。 – Joe
理想的には、私はあなたがこのQで説明している方法のようなものを使用します:http://stackoverflow.com/questions/13862573/sas-prx-to-extract-substring-please)私は薬の辞書を持っています。 'Description'変数内で一致させ、投与量と形態を削除しながら薬剤名部分文字列を返します。私は別のテーブルに薬の名前があり、このチュートリアルと一緒に以前の答えの組み合わせを使用しようとしています:http://www2.sas.com/proceedings/forum2007/223-2007.pdf – diaferiaj
次に私の答えはより良いです、私は疑う。私はPRXソリューションが理想的ではないと思いますが、それは非常に面倒です。 – Joe