通过变量对观察进行分组

时间:2015-03-18 22:01:42

标签: sas grouping renaming

对不起,如果这篇文章多余,请另外发帖,但在搜索时无法找到答案。

我有很多药物清单,有几种药物有多剂,例如:

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列中没有任何条目 - 它是空白的。

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您提供的少量数据,您似乎可以使用SUBSTR功能。

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

如果您的数据更加多样化,请重新发布更多示例