Merge 满足比较条件时在数据集中添加空观测值(行)
我有成对的数据集(A和B),但A总是有额外的观察值,这些观察值在B中被完全删除,这导致我丢失了B中变量“Seg”的原始值 例如:Merge 满足比较条件时在数据集中添加空观测值(行),merge,sas,data-manipulation,Merge,Sas,Data Manipulation,我有成对的数据集(A和B),但A总是有额外的观察值,这些观察值在B中被完全删除,这导致我丢失了B中变量“Seg”的原始值 例如: Dataset A Dataset B Desired dataset C: Seg Fz Seg Fz Seg Fz 1 2.3 1 2.3 1 2.3 2
Dataset A Dataset B Desired dataset C:
Seg Fz Seg Fz Seg Fz
1 2.3 1 2.3 1 2.3
2 9.2 2 1.3 2 .
3 1.3 3 0.9 3 1.3
4 11.4 4 .
5 0.9 5 0.9
我需要将2个数据集(A和B)合并到1(C)中,并用缺少的值替换A的额外观测值,以保持“Seg”变量的顺序并获得所需的数据集C
有没有一个简单的方法可以做到这一点?
我有300对数据集,每个数据集包含44个观察值和4个变量,
所以我计划将其合并到宏或do循环中
谢谢:)
示例代码:
data A;
input Seg Fz;
datalines;
1 2.3
2 9.2
3 1.3
4 11.4
5 0.9
run;
data B;
input Seg Fz;
datalines;
1 2.3
2 1.3
3 0.9
run;
我想这会给你你想要的
proc sql noprint;
create table c as
select a.seg,b.fz
from a as a
left join b as b
on a.fz=b.fz
order by a.seg;
quit;
但是要小心,如果数据集a或b中有重复的值,这可能无法满足您的需要。您能否解释如何确定数据集C中要保留的值?比如为什么seg 4缺失而seg 3 1.3?在数据集c中,为什么seg 2缺失而seg 3 1.3,为什么seg 4缺失而seg 5.9?我将解释“多余”。这些数据来自于对患者的临床实验。由于干扰,数据集a中(由第三方)删除的观察结果被视为有偏差。但因为我在处理纵向数据,并试图正确地建模相关结构,所以数据的顺序以及缺失的观测值对我来说非常重要。这并不能回答任何问题。@DCR抱歉。我会尽量说清楚的。要保留的观测值是数据集B中的观测值。因此,包含在A中但不包含在B中的任何观测值都将替换为空值。同时保留A中“Seg”变量的值。非常感谢@DCR,它的作品!!!!我认为我的数据不可能重复。原始数字在小数点后有8位数字。(即3.72346857)因此其可能性极低。当然,我将手动添加重复项并进行测试,以查看并更好地理解这8行代码的作用。SQL程序万岁!!!:)