2016-12-22 2 views
0

У меня есть текстовая переменная, показывая рецепт пациента, который выглядит довольно грязно, как это:Как извлечь компоненты неорганизованной строковой переменной в Stata?


PatientRx 

ACETAZOLAMIDE  250MG TABLET- 100 
ADAPALENE + BENZOYL 0.1% + 2.5% GEL-..  
ADRENALINE/EPIPEN 300MCG/0.3ML INJ.. 
ALENDRONATE + COLECA 70MG + 140MCG TA..  
ALLOPURINOL   100MG TABLET- 100 
ALUM HYDROX + MAG HY 250+120+120MG/5M.. 
AMILORIDE + HYDROCHL 5MG + 50MG HCL T.. 

Пока я не просмотрел все эти ценности, некоторые модели могут возникнуть:

  • Часто бывает несколько лекарств, и они разделены, например, пробелом и косой чертой.
  • Наркотики также разделяются знаком «плюс». Но плюс знак также используется между дозами.
  • Правило, связанное с пространством, очень произвольно, как в начале, так и в середине ввода.

Как я могу извлечь только названия препаратов в новые переменные? Новые переменные должны выглядеть так:

Newvar1   Newvar2 
ACETAZOLAMIDE 
ADAPALENE   BENZOYL 
ADRENALINE  EPIPEN 
ALENDRONATE  COLECA 

и так далее.

ответ

1

Некоторые из них достигнут первого для регулярных выражений, которые вам действительно понадобятся для полной проблемы. Кроме того, отметьте moss, как установлено ssc install moss.

Но это кажется самым легким, учитывая информацию в примере здесь, в которой все, что нам нужно, чтобы найти позицию первой цифровой цифры от 0 до 9, а затем разобрать, что происходит раньше. Я не знаю, имели ли названия лекарств числовые цифры.

clear 
input str40 sandbox 
" ACETAZOLAMIDE  250MG TABLET- 100" 
"ADAPALENE + BENZOYL 0.1% + 2.5% GEL-"  
" ADRENALINE/EPIPEN 300MCG/0.3ML INJ" 
"ALENDRONATE + COLECA 70MG + 140MCG TA"  
" ALLOPURINOL   100MG TABLET- 100" 
"ALUM HYDROX + MAG HY 250+120+120MG/5M" 
" AMILORIDE + HYDROCHL 5MG + 50MG HCL T" 
end 

gen wherenum = . 
quietly forval j = 0/9 { 
    replace wherenum = min(wherenum, strpos(sandbox, "`j'")) if strpos(sandbox, "`j'") 
} 
gen drug = substr(sandbox, 1, wherenum - 1) 

split drug, parse(+ /) 

l drug?, sep(0) 

    +---------------------------+ 
    |   drug1  drug2 | 
    |---------------------------| 
    1. | ACETAZOLAMIDE    | 
    2. | ADAPALENE  BENZOYL | 
    3. | ADRENALINE  EPIPEN | 
    4. | ALENDRONATE  COLECA | 
    5. | ALLOPURINOL    | 
    6. | ALUM HYDROX  MAG HY | 
    7. | AMILORIDE  HYDROCHL | 
    +---------------------------+ 
Смежные вопросы