database - SAS:从多个数据集创建多个文件

标签 database sas dataset extract

我有 24 个结构相同的数据集。我的意思是相同的列标题(时间、日期、价格、股票代码)、数据集结构等。我不想附加所有 24 个文件,因为一个数据集太大而无法处理。我将所有数据集命名为“file1 file2 file3 file4 ....up to file24”。

我想做的是:

  1. 例如一次更改我所有 24 个文件中的日期格式;

  2. 能够从每个文件#中提取特定的股票代码,例如“Dell”,并附加所有提取的“Dell”数据;

  3. 最后,我如何创建一个循环,允许我将股票代码从“Dell”更改为列表中的另一个股票代码,例如“Goog”?我希望该循环对我所有的股票代码执行 (2)。

最佳答案

  1. 要更改数据集中的日期格式,遍历所有观察结果可能不是一个好主意。标准语法是 -

    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;
  1. 要提取和附加所有“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/

相关文章:

mysql - 如何遍历 SQL 查询并在每次迭代期间更改一个参数

mysql - 数据截断: Truncated incorrect date value error

sql - 让用户只与数据库中的一个表进行交互?

multithreading - 如何在AMD处理器(32核)和Windows 10 Pro上调用SAS Base(https ://www. sas.com/)中的多线程?

r - 如何从R中的数据框中获取第n行

visual-studio - 如何刷新数据集中的关系?

java - 如何计算 Hibernate 查询语言中的行数?

sas - 如何在 SAS 中的 libname 语句的引用字符串中调用宏变量

c# - 使用 LINQ 仅返回包含多个 DataTable 的 DataSet 中的两个特定 DataTable

sas - 如何将 SAS 数据集转换为数据步骤