具有混合值的SAS变量

时间:2018-11-16 16:56:31

标签: date sas character

我有一些具有日期值的变量,但是某些行具有字符信息,因此使它成为字符变量。我需要加90,还要从这些变量中减去今天的日期。 示例变量     变量1     18/30/18     18/02/27     18年6月30日     值     18/05/31     待定     18年8月30日

我在想,如果有一种方法可以将所有字符值更改为丢失/空白,那么我将能够将此字符变量更改为日期格式并进行计算。

请帮助!谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您应该通过“读取”现有变量来创建新的日期变量。

data mixed;
   input var:$8.;
   date = input(var,??mmddyy10.);
   if not missing(date) then do;
      p90 = date + 90;
      mtoday = date - today();
      end;
   format date p90 mtoday mmddyy10.;
   cards;
08/30/18
02/27/18
06/30/18
value
05/31/18
pending
08/30/18 
;;;;
   run;
proc print;
   run;

答案 1 :(得分:0)

首先,您可以使用一个值测试语法。像这样

  data _null_;
strdate='08/30/18';
a=input(strdate,mmddyy10.);
cal1=a+90-today();
cal2=put(cal1,mmddyy10.);
put strdate a cal1 cal2;
run;

然后创建一个用于存储新值的新变量,例如上述的cal2。

如果您不想更改原始变量名,请在数据步骤中重命名cal2。