我有 24 个结构相同的数据集。我的意思是相同的列标题(时间、日期、价格、股票代码)、数据集结构等。我不想附加所有 24 个文件,因为一个数据集太大而无法处理。我将所有数据集命名为“file1 file2 file3 file4 ....up to file24”。
我想做的是:
例如一次更改我所有 24 个文件中的日期格式;
能够从每个文件#中提取特定的股票代码,例如“Dell”,并附加所有提取的“Dell”数据;
最后,我如何创建一个循环,允许我将股票代码从“Dell”更改为列表中的另一个股票代码,例如“Goog”?我希望该循环对我所有的股票代码执行 (2)。
最佳答案
要更改数据集中的日期格式,遍历所有观察结果可能不是一个好主意。标准语法是 -
proc 数据集库 = your_libname nolist; 修改数据集名称; 格式变量名格式名; 退出;
鉴于修改语句不接受多个 SAS 文件,您必须将它包装在所有 24 个文件的宏中
%macro modformats();
proc datasets library = <your libname> nolist;
%do i = 1 %to 24;
modify file&i;
format <variable name> <format name>;
%end;
quit;
%mend modformats;
- 要提取和附加所有“Dell”相关数据,最好使用 View 。
比如你先定义一个view(注意这里没有创建叫'all_files'的物理数据集)-
data all_files / view = all_files;
set file1 file2... file24;
run;
然后你可以写-
data dell;
set all_files;
where ticker = 'DELL';
run;
关于database - SAS:从多个数据集创建多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959678/