2015-03-18 43 views
0

對不起,如果這在另一篇文章中是冗餘的,但在搜索時找不到答案。通過變量對觀測進行分組

我有藥物的一個長長的清單,和一些藥物有多種劑量,例如:

Medication A 3 mg tablet 
Medication A 5 mg tablet 
Medication B 3 mg tablet 
Medication B 5 mg tablet 

我一直在嘗試寫SAS代碼來創建一個第三個變量(newmed),這將分配一個新名稱到沒有劑量的每種藥物(例如,所有藥物A劑量將被稱爲MedA,所有藥物B劑量將被稱爲MedB)。這裏是我的代碼:

data medsorted; 
SET library.meds; 
if DISCHARGE_MEDICATION_NAME="med1_7.5_mg_tablet" THEN newmed= "med1"; 
if DISCHARGE_MEDICATION_NAME="med1_6_mg_tablet" THEN newmed= "med1"; 

if DISCHARGE_MEDICATION_NAME="med2_100_mg/ml_subcutaneous_syringe" THEN newmed= "med2"; 
if DISCHARGE_MEDICATION_NAME="med2_120_mg/ml_subcutaneous_syringe" THEN newmed = "med2";  

/*etc - the list of med goes on*/ 

run; 

我也嘗試使用這個「或」語句,在if語句的整個列表迭代新的MED名。無論哪種方式,該程序運行,但新數據集medsorted沒有任何條目在新的列 - 它是空白的。

我在做什麼錯?

謝謝!

+3

你在第一部分數據不與你在'DISCHARGE_MEDICATION_NAME'檢查排隊。你可以發佈該變量的實際值嗎? – DomPazz 2015-03-18 22:47:53

+0

查看掃描功能以提取藥物名稱的第一部分。如果你的藥物名稱更復雜,這是行不通的。 – Reeza 2015-03-19 00:11:19

+0

@Reeza,同意。這就是爲什麼我問這些值的實際情況。 – DomPazz 2015-03-19 00:23:08

回答

0

從您提供的少量數據中,您似乎可以使用SUBSTR函數。

Data medsorted; 
LENGTH NEWMED $4; 
SET library.meds; 
NEWMED=substr(DISCHARGE_MEDICATION_NAME, 1, 4); 

如果你的數據比這更多樣化,更轉貼例子

相關問題