我试图读取许多数据文件,包括一列日期时间。当我读入所有文件时,datetime列包含相同的日期(2015年7月31日00:00:00,或SAS格式:1753920000),即使正在读入的数据文件在该列中有许多不同的日期时间。为什么我的代码会为每一行输出相同的日期?
代码:
%let type=40;
%let year=2015;
%let months =07;
%let days = 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31;
%let filetype=.csv;
%macro import_files;
%do K=1 %to 31; /*day*/
%let nmbr = %scan(&type,1);
%let yr=%scan(&year,1);
%let mnth=%scan(&months,1);
%let day=%scan(&days,&K);
%let exportfile = "C:\Users\Top&nmbr&yr&mnth&day&filetype";
%let src = "\\2119\outfile";
/* Import All files in that Alpha, Year and Month Group*/
DATA work.RAW_DATA;
INFILE &src firstobs=3 LRECL=1000 DELIMITER=',' MISSOVER DSD;
INPUT city_cd : $CHAR3.
shop_car_type_cd : $CHAR4.
lor: ?? BEST2.
arv_dt : ?? MMDDYY10.
shop_dttm : ?? ANYDTDTM19. /* This is the datetime that reads in the same date for every observation */
RUN;
%end;
%mend import_files;
%import_files;
CSV数据文件:
ATL CCAR 1 10:30 9/7/2015 01JUL2015:00:00:00
阅读SAS后:
ATL CCAR 1 37800 20338 1751500800
答案 0 :(得分:0)
除非我遗漏了一些严重的内容,否则您的INPUT语句中列出了5个变量,但样本数据中有6个变量。哪一个是正确的?我也会将MISSOVER
切换为TRUNCOVER
,.另外,请考虑为变量指定informat
,而不是考虑如何阅读它。你没有得到任何错误,因为??这可以抑制任何错误。从代码中删除它们。我将在下面发布一个答案,以帮助您开始,但它可能不正确。
如上所述,除非您从Excel文件中复制和粘贴,否则您也没有CSV文件,这是您不应该做的。 Excel可能会从您的数据中添加/删除某些我们无法看到的可能导致问题的内容。
data have;
informat arv_dt mmddyy10. shop_dttm anydtdtm. time_data time.;
format shop_dttm datetime21. time_data time.;
INPUT
city_cd $
shop_car_type_cd $
lor
time_data
arv_dt
shop_dttm;
cards;
ATL CCAR 1 10:30 9/7/2015 01JUL2015:00:00:00
;
run;
proc print data=have;
run;