有效连接多个 sas 数据集

2024-02-05

我有超过 200k 个具有相同变量(n

%macro catDat(name, nbr) ;
    /*call in new dataset */
    data new ;
    set libin.&name ;
    run ;

    /* reorder names */
    proc sql noprint;
    create table new as 
    select var1, var2, var3
    from new;
    quit;

    %if &nbr = 1 %then %do ;
        data master;
        set new;
        run;
    %end; 
    %if &nbr > 1 %then %do ;
        data master;
        set master new ;
        run;
    %end ;
%mend;

/* concatenate datasets */
data runthis ;
set datasetNames ;
call execute('%catdat('||datasetname||','||_n_||')');
run;

已解决:请参阅下面鲍勃的评论。


尝试使用PROC APPEND而不是你的“新”数据集;那会快得多:

%macro DOIT;

proc sql noprint;
   select count(*) into : num_recs
   from datasetNames;
quit;

%do i=1 %to &num_recs;

data _null_;
  i = &i;
  set datasetNames point=i;
  call symput('ds_name',datasetname);
  stop;
run; /* UPDATE:  added this line */

%if &i = 1 %then %do;
/* Initialize MASTER with variables in the order you wish */
data master(keep=var1 var2 var3);
   retain var1 var2 var3;
   set libin.&ds_name;
   stop;
run;
%end;

proc append base=master data=libin.&ds_name(keep=var1 var2 var3);
run;

%end;

%mend DOIT;

PROC APPEND会将每个数据集添加到您的新“主数据集”中,而无需像您现在所做的那样每次都重建它。 这也避免了使用CALL EXECUTE,消除您遇到的内存问题(由于在执行堆栈中生成过多代码而引起)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有效连接多个 sas 数据集 的相关文章

随机推荐

  • 反应式扩展超时不会停止序列?

    我正在尝试做一个IObservable
  • 为我的数据库 mysql 中的每一行调用 php 脚本

    如果这是一个愚蠢的问题 我很抱歉 但我现在不知道如何为表中的每一行调用 php 脚本 我正在使用mysql 我以后会使用PDO 我知道它更好 这是我的 选择 页面 我在其中选择所需的行
  • Printer_open() 打印 html 输出

    With printer open php 中的函数 我可以打印我保存的字符串 content变量 并且能够从文件打印 printer Pserver php net printername handler printer open pri
  • 插入缺失的日期行并在新行中插入旧值 PySpark

    我有一个 DataFrame 其中包含一个人 一个体重和时间戳 如下所示 person timestamp weight 1 2019 12 02 14 54 17 49 94 1 2019 12 03 08 58 39 50 49 1 2
  • 如何在 ASP.net 控制器操作中访问整个查询字符串

    我知道如果我有一个像 XController Action id 1 这样的 url 和一个操作方法 void Action int id id 参数将自动从查询字符串中读取 但是 当我事先不知道所有参数的名称时 如何访问整个查询字符串 例
  • 哪个版本的 Xcode 支持 iOS 12.2?

    当我在运行 iOS 12 2 的 iPhone 7 上运行我自己开发的软件时 弹出了一个警报 这款 iPhone 7 型号 1660 1778 1779 1780 运行的是 iOS 12 2 16E5201e 此版本的 Xcode 可能不支
  • SQL Server 用最后一个值替换 NULL [重复]

    这个问题在这里已经有答案了 我想找到一种方法用最后一个非 NULL 值替换 NULL 值 我有一张像这样的桌子 Date Cost 2017 01 01 18 6046511 2017 01 03 22 9787234 2017 01 03
  • oracle 限制为 1000 / hibernate

    Oracle 知道 1000 个元素的限制where a in 条款 当 Hibernate 与 Oracle 结合使用时 是否也存在此限制 Hibernate 中仍然存在此数据库限制 如果您确实需要在 in 子句中包含超过 1000 个项
  • 关于模板专业化和继承的良好实践

    模板专业化不考虑继承层次结构 例如 如果我专门设计一个模板Base并实例化它Derived 不会选择专业 参见下面的代码 1 这可能是一个主要障碍 因为它有时会导致违反里氏替换原则 例如 在工作时这个问题 https stackoverfl
  • python:安装anaconda后,如何导入pandas

    我已经安装了蟒蛇 现在当我尝试跑步时 import pandas as pd 我收到以下错误 Traceback most recent call last File
  • Python 中的词法分析、标记化和解析资源

    人们可以向我指出有关使用 Python 进行词法分析 解析和标记化的资源吗 我正在对一个开源项目进行一些黑客攻击 hotwire http www hotwire shell org 并想对代码进行一些更改lexes http code g
  • Poco C++ 库和 Win32 GUI 集成

    有人曾经在 Win32 GUI 应用程序中使用过 Poco C 库吗 在 PocoFoundation 库中 UnWindows h 头文件中的许多 undef 禁止使用重要的 API 如 CreateWindows LoadLibrary
  • 从tensorflow.js神经网络获取权重

    我有这个顺序模型 this model tf sequential this model add tf layers dense units 16 useBias true inputDim 7 input this model add t
  • 使用 XMLInputFormat 在 hadoop 中解析 xml 时不执行我的 hadoop 映射器类

    我是 hadoop 新手 使用 Hadoop 2 6 0 版本并尝试解析复杂的 XML 经过一段时间的搜索 我了解到 对于 XML 解析 我们需要编写自定义的 InputFormat 即 mahout 的 XMLInputFormat 我也
  • 如何将图像拖放到 HTML5 Canvas 上?

    我修改了一个页面 可以将图像拖放到画布上 它可以做我想要的一切 除了一个 我尝试了多种方法 包括脚本 例如 Kinetic 和 Raphael 我仍然认为这可能是可行的方法 但已经死了 一旦图像被放下 我就无法将其在画布上拖动到新位置 fu
  • 使用 PDFBox 从字符串中删除非法字符

    当我尝试向 PDF 中写入非法字符时 我显然遇到了异常 例如 contentStream showText some illegal characters java lang IllegalArgumentException U 000A
  • Python pandas 相当于替换

    在R中 有一个相当有用的replace功能 本质上 它在数据帧的给定列中进行有条件的重新分配 它可以这样使用 replace df column df column 1 Type 1 在 pandas 中实现相同目标的好方法是什么 我应该使
  • 仅通过命令行在 Windows 上运行 CMake 生成的 INSTALL.vcxproj?

    我有一个 C 程序 正在尝试在 AppVeyor 上构建和部署 因此 我没有可用的 GUI 工具 我的项目的依赖项均使用 CMake 作为其构建系统 并且 CMake 默认情况下 在 Windows 上生成 Visual Studio 项目
  • Java - 同时将两个表达式分配给一个变量

    我刚刚学完 Java 第一年 我一直在查看 JDK 源代码作为练习 我遇到了以前从未遇到过的情况 即在同一个语句中对同一个变量进行了两次赋值 e g variable 表达 表达 这里究竟发生了什么 这是一个相当普遍的事情吗 双重作业的目的
  • 有效连接多个 sas 数据集

    我有超过 200k 个具有相同变量 n macro catDat name nbr call in new dataset data new set libin name run reorder names proc sql noprint