Date 具有混合值的SAS变量
我有一些变量有日期值,但是,有些行有字符信息,因此这是一个字符变量。我需要加上90,还需要从这些变量中减去今天的日期。 示例变量 可变1 08/30/18 02/27/18 06/30/18 价值 05/31/18 悬而未决的 2018年8月30日 我在想,如果有办法将所有字符值更改为missing/blank,那么我就可以将这个字符变量更改为date格式并进行计算Date 具有混合值的SAS变量,date,sas,character,Date,Sas,Character,我有一些变量有日期值,但是,有些行有字符信息,因此这是一个字符变量。我需要加上90,还需要从这些变量中减去今天的日期。 示例变量 可变1 08/30/18 02/27/18 06/30/18 价值 05/31/18 悬而未决的 2018年8月30日 我在想,如果有办法将所有字符值更改为missing/blank,那么我就可以将这个字符变量更改为date格式并进行计算 请帮忙!谢谢。我认为您应该通过“读取”现有变量来创建一个新的日期变量 data mixed; input var:$8.;
请帮忙!谢谢。我认为您应该通过“读取”现有变量来创建一个新的日期变量
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;
首先,可以使用一个值测试语法。像这样
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。谢谢!这是可行的,但我有点搞不清楚格式-mmddyy10前面的“?”是什么。是什么意思?@JCP the??是为了抑制由VAR的非日期值引起的无效数据消息。您应该能够将其与任何信息一起使用,可能是12的宽度太短,或者字符串中有非打印字符。注意,实际上没有
best
informat,SAS将其解释为对正常f
numeric informat的请求。在某些方面,逗号
是最好的信息,因为它可以处理包含$
和/或,
字符的字符串。