从具有特定日期范围的 SAS 数据集中删除行
Posted
技术标签:
【中文标题】从具有特定日期范围的 SAS 数据集中删除行【英文标题】:Remove rows from SAS dataset with specific date range 【发布时间】:2022-01-15 09:48:54 【问题描述】:有 2 个数据集。我想要一个包含仅在 Dataset_A 中而不在 Dataset_B 中的所有行的 Final_Output 数据集。 此外,在 Dataset_B 中的日期可以在 Dataset_A 中的日期的 +8 或 -8 范围内。
在这里,日期为 21-Jan-21 且金额为 $10 的 Account_no 324 与 Dataset_B 中的匹配项(Dataset_A.Date 比 Dataset_B.Date 中的日期大 +8 或小 -8)。
就像图片一样。突出显示的颜色被移除,剩下的是 Final_Output。
【问题讨论】:
请以文本形式发布数据并展示您的尝试。 【参考方案1】:试试这个,如果这就是你要找的,请告诉我。我分两步来帮助你理解逻辑,你也可以浓缩成一步。
第一步会将 B 中符合您的条件的所有数据与 A 连接起来。 第二步将删除匹配的,并保留其余的。
proc sql;
create table Temp as
select a.*, b.account_no as B_Account_No
from Dataset_A A left join Dataset_B B
on a.Account_no = b.Account_no
and intnx('day', a.Date, -8) < b.Date < intnx('day', a.Date, +8)
;quit;
data Final;
set Temp;
where B_Account_no = .;
drop B_Account_no ;
run;
【讨论】:
非常感谢。这个解决方案实际上对我有用。以上是关于从具有特定日期范围的 SAS 数据集中删除行的主要内容,如果未能解决你的问题,请参考以下文章