【问题标题】:Adding Null observations (rows) within a Dataset when a comparison condition is met满足比较条件时在数据集中添加空观测值(行)
【发布时间】:2016-10-28 15:30:41
【问题描述】:

我有成对的数据集(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     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;

【问题讨论】:

  • 您能解释一下如何确定要在数据集 C 中保留哪个值吗?比如为什么缺少 seg 4 但 seg 3 1.3?
  • 在数据集 c 为什么缺少 seg 2 但 seg 3 1.3 以及为什么缺少 seg 4 但 seg 5 .9?
  • 我会解释@superfluous。该数据来自对患者的临床实验。数据集 A 中(由第三方)删除的观察结果被认为是由于干扰而存在偏差。但是因为我正在处理纵向数据并尝试正确建模相关结构,所以数据的顺序以及缺失的观察结果对我来说非常重要。
  • 这没有回答任何一个问题。
  • @DCR 抱歉。我会尽量让自己更清楚。要保留的观察是数据集 B 中的观察。因此,任何包含在 A 中但不在 B 中的观察都将被替换为空值。同时保留 A 中“Seg”变量的值。

标签: merge sas data-manipulation


【解决方案1】:

我认为这会给你你正在寻找的东西。

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 可以有重复的值,这可能无法满足您的需求。

【讨论】:

  • 非常感谢!!! @DCR,它的作品!!!!我认为我的数据不可能重复。原始数字在小数点后有 8 位。 (即 3.72346857)所以它极不可能。但是,当然,我将手动添加重复项并进行测试,以查看并更好地理解这 8 行代码的作用。过程 SQL 万岁!!! :)
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多