首页 > 解决方案 > SAS 将小表连接(或插入)到大表

问题描述

我有小问题。我有大桌子和几张小桌子,其中小桌子包括大桌子的部分字段。我如何根据字段是否相同来插入(或联合)表 - 设置数据,如果小表没有来自大的字段 - 在大表中设置 null/0。

例子:

data temp1;
infile DATALINES dsd missover;
input a b c d e f g;
CARDS;
1, 2, 3, 4,5,6
2, 3, , 5
3, 3
4,,3,2,3,
;
run;

data temp2;
infile DATALINES dsd missover;
input a c e g;
CARDS;
5, 2, 3, 4
6, 3, , 5
7, 3
;
run;

是否有一种优雅的方法,如果我将 temp2 插入 temp1 - temp2 中缺少的字段将在 temp1 中设置 null 值?

谢谢你的帮助!

标签: insertsas

解决方案


我不太清楚您打算做什么操作,但一些初步想法是:

  1. 要比较两个数据集之间的列(并检查其中一个是否存在值),最好使用外连接。您可以通过MERGE数据步中的子句进行连接,或者更优雅地使用PROC SQL.
  2. 但是,无论使用哪种方法,您都必须指定其中的哪两行temp1temp2进行比较——您通常连接到两个表中都可用的列。

temp1为了帮助我们解决您的问题,如果您在and上执行它,您能否为您所需的操作提供正确的输出temp2?这将显示您探索了哪些选项以及需要修复的内容。


推荐阅读