Formatting SAS格式:整月名称为整数

Formatting SAS格式:整月名称为整数,formatting,sas,Formatting,Sas,在SAS中将整月名称格式化为整数的最佳方式是什么 “一月”->1 “二月”->2您可以制作自己的格式: 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.);

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

“一月”->1
“二月”->2

您可以制作自己的格式:

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; 

您可以制作自己的格式:

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; 

这取决于您将如何在代码中使用它。如果您需要在代码的多个部分重复此映射,那么我建议您使用PROC格式创建一个自定义格式,该格式可以在数据步骤或其他过程中使用。如果您只是在一个数据步骤中执行此映射,那么您可以使用SELECT/WHEN或If/ELSE If逻辑执行相同的操作。在SAS中有许多其他方法可以实现这一点,但我认为这两种方法是最直接的。

这取决于您将如何在代码中使用它。如果您需要在代码的多个部分重复此映射,那么我建议您使用PROC格式创建一个自定义格式,该格式可以在数据步骤或其他过程中使用。如果您只是在一个数据步骤中执行此映射,那么您可以使用SELECT/WHEN或If/ELSE If逻辑执行相同的操作。在SAS中有许多其他方法可以实现这一点,但我认为这两种方法是最直接的。

一种使用输入函数将字符类型转换为数字类型的方法。但我同意,创建自定义格式更好

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;

一种使用输入函数将字符类型转换为数字类型的方法。但我同意,创建自定义格式更好

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;

您可以在没有格式的情况下执行此操作:

data test;
  monthtext="January";
  month=month(input("01"||substr(monthtext,1,3)||"2000",date9.));
run;

您可以在没有格式的情况下执行此操作:

data test;
  monthtext="January";
  month=month(input("01"||substr(monthtext,1,3)||"2000",date9.));
run;