iso8601:
1' TRTSDTM iso8601=RFXSTDTC $20.;
1) TRTSDTM=input(RFXSTDTC,e8601dt.);
format TRTSDTM e8601dt.;
常见报错:函数input的参数无效
正确写法:2)TRTSDTM=input(RFXSTDTC,b8601dt.);
format TRTSDTM e8601dt.;
注:当字符串中同时有 date 和 datetime 日期时,就只能用 B8601DT.
b8601dt.,既可以作为输出格式也可以作为输入格式,如果在input中使用(作为输入格式),则把原来字符型的带T连接符的时间日期格式变为sas数值型时间日期值。
求解答?b8601dt. e8601dt. is8601dt.区别怎么用?为什么1’1)会报错:函数input的参数无效?
2'可以不用1'法;直接 var1=domainDTA_raw ||"T"|| domainTIM_raw即可:常见于制作SDTM时
注:1.domainDTA/TIM_raw一般已经是定义为数值型了
2.一般要求外在形像即可即满足2’,format 内在定义不了也行。
yymmdd10.:
1'BRTHDT yymmdd10.=BRTHDTC $20
set sdtm.dm;
BRTHDT=input(BRTHDTC,yymmdd10.);
format BRTHDT yymmdd10.;
注:使用 DTC 结尾的变量存储字符型日期,使用 DT 结尾的变量存储数值型日期,这是符合标准的做法
2'BRTHDTC yymmdd10.=BRTHDTC $20.把自己定义成yymmdd10.:
最好把原变量先赋值给新变量,转化成1'的做法:
set sdtm.dm(rename=(BRTHDTC=BRTHDTC1));
BRTHDTC=input(BRTHDTC1,yymmdd10.);
format BRTHDTC yymmdd10.;
目的:BRTHDTC $20.定义成yymmdd10.
一般ERORR:var1=input(var1,yymmdd10.)可能会导致强制数值型赋值给字符型原因:var1=:字符型 input(var1,yymmdd10.):数值型
解决方法:1.赋值给定义的新变量对其处理
2.注意数值字符是否转化成功
常见错误:
1.BRTHDTC=input(BRTHDTC,yymmdd10.);
format BRTHDTC yymmdd10.;
keep BRTHDTC;
报错yymmdd10.不符合:原因:BRTHDTC此时为字符型,而yymmdd10.为数值型
2.BRTHDTC_C=input(BRTHDTC,yymmdd10.);
format BRTHDTC_C yymmdd10.;
keep BRTHDTC BRTHDTC_C;
赋值_c虽然有结果未报错,但是目的变了。BRTHDTC_c被定义成 yymmdd10.,BRTHDTC 仍未改变仍是字符型$20.