通过变量对观测进行分组
问题描述:
对不起,如果这在另一篇文章中是冗余的,但在搜索时找不到答案。通过变量对观测进行分组
我有药物的一个长长的清单,和一些药物有多种剂量,例如:
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没有任何条目在新的列 - 它是空白的。
我在做什么错?
谢谢!
答
从您提供的少量数据中,您似乎可以使用SUBSTR函数。
Data medsorted;
LENGTH NEWMED $4;
SET library.meds;
NEWMED=substr(DISCHARGE_MEDICATION_NAME, 1, 4);
如果你的数据比这更多样化,更转贴例子
你在第一部分数据不与你在'DISCHARGE_MEDICATION_NAME'检查排队。你可以发布该变量的实际值吗? – DomPazz 2015-03-18 22:47:53
查看扫描功能以提取药物名称的第一部分。如果你的药物名称更复杂,这是行不通的。 – Reeza 2015-03-19 00:11:19
@Reeza,同意。这就是为什么我问这些值的实际情况。 – DomPazz 2015-03-19 00:23:08