SAS格式:全月名称到整数

时间:2012-02-15 19:34:14

标签: formatting sas

在SAS中将完整月份名称格式化为整数的最佳方法是什么?

'1月' - > 1 '二月' - > 2

4 个答案:

答案 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中还有很多其他方法可以实现这一点,但我认为这两种方法最直接。