首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用BY(id)的数据步骤合并

不使用BY(id)的数据步骤合并
EN

Stack Overflow用户
提问于 2021-06-09 15:11:38
回答 2查看 230关注 0票数 0

我需要使用数据步骤合并两个数据集,如下所示:

代码语言:javascript
复制
Data have1;
x=1; output;
x=2; output;
x=3; output;
Run;

Data have2;
y = 'A';
z = 'B';
Run;

Data want;
Merge have1 have2;
Run;

其结果应如下:

代码语言:javascript
复制
x   y   z
1   A   B
2   A   B
3   A   B

但是,当我运行合并时,SAS只合并第一行并给出以下内容:

代码语言:javascript
复制
x   y   z
1   A   B
2   
3   

我知道这可以使用左联接来完成,但是为了处理完整数据集中的变量,我更希望通过合并来完成。有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-09 15:24:18

变量Z从何而来?我想这可能是你想要的。

代码语言:javascript
复制
Data want;
   set have1;
   if _n_ eq 1 then set have2;
   Run;
票数 1
EN

Stack Overflow用户

发布于 2021-06-09 16:11:10

为了解释发生了什么,当您从dataset获取数据并“耗尽”行时,SAS正在做什么,它将来自该数据集的所有变量设置为缺失。当您执行set a b (同一set语句上的两个数据集)或没有BYmerge a bset a; set b;时,可能会发生这种情况,尽管在后一种情况下,当第一个dataset运行完行时,数据步骤将终止,所以这并不重要。

@data_null_s代码工作的原因是

代码语言:javascript
复制
if _n_ eq 1 then set b;

从来没有试图拉一排没有在那里!它拉第一行,然后停止拉。由于来自setmerge的所有变量都是自动保留的,因此即使在数据步骤循环的第一次迭代之后(只要您不更改它们),也会保留这些值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67906989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档