|
如果只有这种格式
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:13:18
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:06:31
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:07:16
2012-03-05,1,2012-3-5 0:00:01,2012-3-5 0:04:44
那么
proc import datafile="C:\Users\Desktop\test.txt"
out=class
dbms=dlm replace;
delimiter=",";
getnames=no;
run;
直接导入就会只标准的sas日期格式。
如果中间穿插着
2012-03-05,1,2012-3-5,2012-3-5
那么最后两个变量会被认为是字符。
先用上面程序去导入sas。
然后通过程序去处理。
data final;
set class;
format var3_d yymmdd10. var3_t time9. var3_dt datetime20. var4_d yymmdd10. var4_t time9. var4_dt datetime20.;
var3_d=mdy(scan(scan(strip(var3),1,' '),2,'-'),scan(scan(strip(var3),1,' '),3,'-'),scan(scan(strip(var3),1,' '),1,'-'));
var3_t=hms(scan(scan(strip(var3),2,' '),1,':'),scan(scan(strip(var3),2,' '),2,':'),scan(scan(strip(var3),2,' '),3,':'));
if missing(var3_t) then var3_dt=var3_d*60*60*24;
else var3_dt=var3_d*60*60*24+var3_t;
var4_d=mdy(scan(scan(strip(var4),1,' '),2,'-'),scan(scan(strip(var4),1,' '),3,'-'),scan(scan(strip(var4),1,' '),1,'-'));
var4_t=hms(scan(scan(strip(var4),2,' '),1,':'),scan(scan(strip(var4),2,' '),2,':'),scan(scan(strip(var4),2,' '),3,':'));
if missing(var4_t) then var4_dt=var4_d*60*60*24;
else var4_dt=var4_d*60*60*24+var4_t;
run;
我能想到的处理方法就是这样了。
|