将大型 SAS 数据集拆分为较小的数据集 [英] Split large SAS dataset into smaller datasets

查看:33
本文介绍了将大型 SAS 数据集拆分为较小的数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在将大型 SAS 数据集拆分为较小的数据集时,我需要一些帮助.

I need some assistance with splitting a large SAS dataset into smaller datasets.

每个月我都会有一个包含几百万条记录的数据集.这个数字会因月而异.我需要将此数据集拆分为多个较小的数据集,每个数据集包含 250,000 条记录.例如,如果我在原始数据集中有 1,050,000 条记录,那么我需要最终结果是 4 个包含 250,000 条记录的数据集和 1 个包含 50,000 条记录的数据集.

Each month I'll have a dataset containing a few million records. This number will vary from month to month. I need to split this dataset into multiple smaller datasets containing 250,000 records each. For example, if I have 1,050,000 records in the original dataset then I need the end result to be 4 datasets containing 250,000 records and 1 dataset containing 50,000 records.

从我一直在看的情况来看,这似乎需要使用宏.不幸的是,我对 SAS 相当陌生(不熟悉使用宏)并且没有太多时间来完成这项工作.任何帮助将不胜感激.

From what I've been looking at it appears this will require using macros. Unfortunately I'm fairly new to SAS (unfamiliar with using macros) and don't have a lot of time to accomplish this. Any help would be greatly appreciated.

推荐答案

基于 Joe 的回答,也许你可以尝试这样的事情:

Building on Joe's answer, maybe you could try something like this :

%MACRO SPLIT(DATASET);

%LET DATASET_ID = %SYSFUNC(OPEN(&DATASET.));
%LET NOBS = %SYSFUNC(ATTRN(&DATASET__ID., NLOBS));
%LET NB_DATASETS = %SYSEVALF(&NOBS. / 250000, CEIL);

DATA 
  %DO I=1 %TO &NB_DATASETS.;
    WANT&I. 
  %END;;

  SET WANT;

  %DO I=1 %TO &NB_DATASETS.;

    %IF &I. > 1 %THEN %DO; ELSE %END; IF _N_ LE 2.5E5 * &I. THEN OUTPUT WANT&I.;

  %END;
RUN;
%MEND SPLIT;    

这篇关于将大型 SAS 数据集拆分为较小的数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆