我有一个很大的dataset叫做rawdata,里面有symbol,date和其他列。我知道如果想从里面提取出特定symbol的数据,可以用下面的语句:
data mydata;
set rawdata;
where symbol = 'AAA';
run;
但是我想提取的symbol有很多,那应该怎么用where语句做呢?我想提取的symbol储存在一个叫symlist的dataset里,里面只有symbol这一列。
我试过sql语句,但是因为rawdata很大,读取起来很花时间。如果能够用where语句的话会快很多。
我可能要介绍一下rawdata这个dataset的详细情况:
rawdata来自在另一个硬盘上,按照date排列的文件集。每150日时长的文件读取需要一个小时(如果不用where语句限制的话),而我要读十几年的数据。事实上,我是用set语句里的open=defer这个选项把原来的文件读取出来并合并成一个新的dataset,叫做rawdata。
所以如果不直接在where里限制symbol,而是用sql、merge或者其他proc对rawdata进行预处理都会要很久。