对不起,如果这篇文章多余,请另外发帖,但在搜索时无法找到答案。
我有很多药物清单,有几种药物有多剂,例如:
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剂量将被称为梅德布)。这是我的代码:
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的新数据集在newmed列中没有任何条目 - 它是空白的。
我做错了什么?
谢谢!
答案 0 :(得分:0)
根据您提供的少量数据,您似乎可以使用SUBSTR功能。
Data medsorted;
LENGTH NEWMED $4;
SET library.meds;
NEWMED=substr(DISCHARGE_MEDICATION_NAME, 1, 4);
如果您的数据更加多样化,请重新发布更多示例