SAS proc导入.csv文件缺少列问题

SAS proc导入.csv文件缺少列问题,csv,import,sas,Csv,Import,Sas,我正在尝试将多个.csv文件导入SAS。这些csv文件是12个月的每小时温度数据,每列表示日期和时间。例如,1月份文件的列为:20101 00-20131 23。由于月份长度不同,列数也相应不同 使用以下代码导入数据 proc import out=air.air&year datafile="year\hourly*.csv" dbms=csv replace; getnames=yes; DATAROW=2; run; 我到第29天才有约会时间。我想读取顺序很重要,所以

我正在尝试将多个.csv文件导入SAS。这些csv文件是12个月的每小时温度数据,每列表示日期和时间。例如,1月份文件的列为:20101 00-20131 23。由于月份长度不同,列数也相应不同

使用以下代码导入数据

 proc import out=air.air&year
 datafile="year\hourly*.csv" dbms=csv replace;
 getnames=yes;
 DATAROW=2; 
 run;
我到第29天才有约会时间。我想读取顺序很重要,所以我尝试重新排序文件名,使1月份成为第一个文件,但仍然无法读取所有列

考虑到所涉及的大约20年每月小时数据,要一个接一个地指定文件名并不容易。有人知道SAS在一个文件夹中读取文件的顺序吗

如果有人能为我指出处理类似任务的方向,我将不胜感激


谢谢

如果您知道该结构,则无需使用PROC IMPORT来读取CSV文件。只需通过数据步骤直接读取即可。例如,如果所有的值都是数字,并且每个文件的顶部都有一个需要跳过的标题行,那么这应该是可行的。您应该能够解析文件名中的年份和月份。如果列实际上是从第1天的0小时到该月最后一天的23小时,那么只需使用DO循环来增加day和hour变量

data AIR ;
  length filename filevar $200 ;     
  infile "&path\hourly*.csv" dsd truncover length=ll column=cc filename=filevar;
  input @;
  filename=filevar;
  if filename ne lag(filename) then do;
     input / @ ;
     row=0;
  end;
  row+1;
  do day=1 to 31 while (cc < ll) ;
    do hour=0 to 23 while (cc < ll) ;
      input value @ ;
      output;
    end;
  end;
run;
数据空气;
长度filevar$200;
infle“&path\hourly*.csv”dsd truncover length=ll column=cc filename=filevar;
输入@;
filename=filevar;
如果文件名ne lag(文件名),则执行此操作;
输入/@;
行=0;
结束;
行+1;
do日=1至31,同时(cc
也许可以添加一个列计数器,然后使用
intnx('Hour',…)
将其转换为通常为变量名的小时/天值?代码使用COL作为列计数器。真正的问题是标题行是否有可能需要读取并与值组合的实际信息。好的,标题行包含小时/天信息,但您可以使用
intnx
col
中获取该信息(很好,它已经存在,完全间隔在该行上).我试过Tom的代码确实有效,但我的问题要复杂得多,所以我会进一步探索。谢谢大家的鼓励!