在SAS中将完整月份名称格式化为整数的最佳方法是什么?
'1月' - > 1 '二月' - > 2
答案 0 :(得分:4)
您可以制作自己的格式:
options fmtsearch=(work);
proc format;
invalue MonNum
JANUARY = 1
FEBRUARY = 2
;
run;
data Month;
length month $10;
input Month $;
month=upcase(month);
monthnum=input(month,monnum.);
datalines;
January
February
;
Run;
Proc report data=work.month nowd;
column month monthnum;
run;
答案 1 :(得分:2)
您可以在没有格式的情况下执行此操作:
data test;
monthtext="January";
month=month(input("01"||substr(monthtext,1,3)||"2000",date9.));
run;
答案 2 :(得分:1)
使用输入函数将字符类型转换为数字类型的方法。但我同意创建自定义格式要好得多。
data test;
input monthchar $15.;
datalines;
December
January
March
;
run;
data test;
set test;
monthnum=month(input(cats(1,substr(monthchar,1,3),2000),date9.));
run;
答案 3 :(得分:0)
这取决于您在代码中如何使用它。如果您需要在代码的多个部分重复此映射,那么我建议使用PROC FORMAT创建自定义格式,可以在数据步骤或其他过程中使用。如果您只是在一个数据步骤中执行此映射,那么您可以使用SELECT / WHEN或IF / ELSE IF逻辑来执行相同操作。在SAS中还有很多其他方法可以实现这一点,但我认为这两种方法最直接。