在 SAS 中使用多个变量创建多个变量
Creating multiple variables using multiple variables in SAS
数据是这样的......
Line1 Line2 Product_name Segment 1 Segment 2
EUCREAS ORAAL EUCREAS DPP-4 DPP-4 -EUCREAS
GALVUS ORAAL GALVUS DPP-4 DPP-4 -GALVUS
GLICLAZIDE ORAAL DIAMICRON SU SU -GLICLAZIDE
GLICLAZIDE ORAAL GLICLAZIDE SU SU -GLICLAZIDE
GLP-1 ORAAL BYDUREON GLP-1 GLP-1
GLP-1 ORAAL BYETTA GLP-1 GLP-1
GLP-1 ORAAL LYXUMIA GLP-1 GLP-1
GLP-1 ORAAL VICTOZA GLP-1 GLP-1
INSULINES INSULINES ACTRAPHANE INSULINES INSULINES
INSULINES INSULINES ACTRAPID INSULINES INSULINES
这里我必须使用line1
、line2
和product_name
来创建segment1
和segment2
。
我可以使用 if 语句,但是在数据步骤或过程中有没有其他方法可以做到这一点 sql。
假设您有一个从 LINE1/LINE2/PRODUCT_NAME 到您的段的相当简单的映射,一个很好的方法是创建一个格式:
proc format;
value $seg1f
'EUCREAS:ORAAL:EUCREAS' = 'DPP-4'
'GALVUS:ORAAL:EUCREAS' = 'DPP-4'
....
;
value $seg2f
'EUCREAS:ORAAL:EUCREAS' = 'DPP-4 - EUCREAS'
'GALVUS:ORAAL:EUCREAS' = 'DPP-4 - GALVUS'
....
;
run;
然后您只需分配:
data want;
set have;
seg1 = put(catx(':', line1, line2, product_name), $seg1f.);
seg2 = put(catx(':', line1, line2, product_name), $seg2f.);
run;
或者如果更方便的话,您可以在 PROC SQL
步骤中使用相同的格式。您需要仔细考虑要使用的分隔符,并且不能只调用格式 seg1
和 seg2
,因为格式名称不允许以数字结尾。如有必要,您可以以编程方式创建格式,请参阅 PROC FORMAT
上的 CNTLIN
选项。
数据是这样的......
Line1 Line2 Product_name Segment 1 Segment 2
EUCREAS ORAAL EUCREAS DPP-4 DPP-4 -EUCREAS
GALVUS ORAAL GALVUS DPP-4 DPP-4 -GALVUS
GLICLAZIDE ORAAL DIAMICRON SU SU -GLICLAZIDE
GLICLAZIDE ORAAL GLICLAZIDE SU SU -GLICLAZIDE
GLP-1 ORAAL BYDUREON GLP-1 GLP-1
GLP-1 ORAAL BYETTA GLP-1 GLP-1
GLP-1 ORAAL LYXUMIA GLP-1 GLP-1
GLP-1 ORAAL VICTOZA GLP-1 GLP-1
INSULINES INSULINES ACTRAPHANE INSULINES INSULINES
INSULINES INSULINES ACTRAPID INSULINES INSULINES
这里我必须使用line1
、line2
和product_name
来创建segment1
和segment2
。
我可以使用 if 语句,但是在数据步骤或过程中有没有其他方法可以做到这一点 sql。
假设您有一个从 LINE1/LINE2/PRODUCT_NAME 到您的段的相当简单的映射,一个很好的方法是创建一个格式:
proc format;
value $seg1f
'EUCREAS:ORAAL:EUCREAS' = 'DPP-4'
'GALVUS:ORAAL:EUCREAS' = 'DPP-4'
....
;
value $seg2f
'EUCREAS:ORAAL:EUCREAS' = 'DPP-4 - EUCREAS'
'GALVUS:ORAAL:EUCREAS' = 'DPP-4 - GALVUS'
....
;
run;
然后您只需分配:
data want;
set have;
seg1 = put(catx(':', line1, line2, product_name), $seg1f.);
seg2 = put(catx(':', line1, line2, product_name), $seg2f.);
run;
或者如果更方便的话,您可以在 PROC SQL
步骤中使用相同的格式。您需要仔细考虑要使用的分隔符,并且不能只调用格式 seg1
和 seg2
,因为格式名称不允许以数字结尾。如有必要,您可以以编程方式创建格式,请参阅 PROC FORMAT
上的 CNTLIN
选项。