根据某些匹配变量分离数据集

Posted

技术标签:

【中文标题】根据某些匹配变量分离数据集【英文标题】:Segregate dataset based on certain matching variables 【发布时间】:2022-01-19 11:38:35 【问题描述】:

我有 2 个数据集,一个是基础数据集,另一个是它的子集,我想创建一个数据集,其中记录不存在于子集数据集中但存在于基础数据集中。因此,如果子集中不存在 acct_num test_id trandate actual_amt 的组合,那么它应该出现在结果数据集中。

DATA base;
INPUT acct_num test_id tran_date:anydtdte. actual_amt final_amt final_amt_added ;
format tran_date date9.;
DATALINES; 
55203610 2542 12-jan-20 30 45 45
16124130 8062 .         56 78 78 
16124130 8062 14-dec-19 8  78 78
80479512 2062 19-mar-19 32 32 32
70321918 2062 20-dec-19 1  93 54
17312410 6712 .         45 90 90
17312410 6712 15-jun-18 0  90 90
74623123 2092 17-aug-18 34 87 87
24245321 2082 22-jan-17 22 56 67
;
run;

data subset;
input acct_num test_id tran_date:anydtdte. actual_amt final_amt final_amt_added ;
format tran_date date9.;
DATALINES; 
55203610 2542 12-jan-20 30 45 45
16124130 8062 .         56 78 78 
16124130 8062 14-dec-19 8  78 78
17312410 6712 .         45 90 90
74623123 2092 17-aug-18 34 87 87
24245321 2082 22-jan-17 22 56 67
;
run;

我想要的数据

80479512 2062 19-mar-19 32 32 32
70321918 2062 20-dec-19 1  93 54
17312410 6712 15-jun-18 0  90 90

我尝试在 SQL 中使用 not in 函数,但它与该语句中的多个变量不匹配。 任何帮助将不胜感激。

【问题讨论】:

请正确格式化您的数据以使其可以使用,因为它现在一团糟且无法使用。 我有敏感数据不能共享,这只是一个例子,我只是想知道要使用的逻辑 【参考方案1】:

关于如何解决负集,见Except operator

proc sql noprint;
  create table want as 
  select * from base
  except 
  select * from subset
  ;
quit;

【讨论】:

【参考方案2】:

列出子集中所有观察到的值,然后简单地将基本文件与子集中找到的组合合并,并输出仅在基本文件中的记录。

请注意,将子集组合限制为不重复并仅保留排序变量很重要,否则您可能会覆盖子集中的值。

proc sort data=base; 
  by acct_num test_id tran_date actual_amt;
proc sort data=subset out=subset_combinations (keep=acct_num test_id tran_date actual_amt) nodupkey; 
  by acct_num test_id tran_date actual_amt;

data want;
  merge base (in=in1) subset_combinations (in=in2);
  by acct_num test_id tran_date actual_amt;
  if in1 & ^in2;
run;

【讨论】:

以上是关于根据某些匹配变量分离数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 R 中的某些模式导入大量数据集

SQL 表变量 - 添加检查匹配行集是不是存在的约束

MachineLearning入门-11(算法评估)

根据 id 和 date-R 合并数据集

怎样在sas数据集中选取某些数据行形成新的数据集

如何从现有模型生成与之配合的数据