Sas 从某一日期开始合并
我正在尝试合并两个表。表A有一个id列、一个日期列和一个期间内每个日期的金额值 表B既有id和日期,也有其他包含详细信息的列。但是,每当细节发生变化时,只有一个条目,因此我不知道如何与普通联接合并。我希望对于A中的每个条目,在A中的日期之前,从B中该ID可用的最后一天开始填充详细信息Sas 从某一日期开始合并,sas,Sas,我正在尝试合并两个表。表A有一个id列、一个日期列和一个期间内每个日期的金额值 表B既有id和日期,也有其他包含详细信息的列。但是,每当细节发生变化时,只有一个条目,因此我不知道如何与普通联接合并。我希望对于A中的每个条目,在A中的日期之前,从B中该ID可用的最后一天开始填充详细信息 Table A | ID | date | amount | | 1 | 01JAN| 56 | | 1 | 02JAN| 54 | | 1 | 03JAN| 23 | | 1 |
Table A
| ID | date | amount |
| 1 | 01JAN| 56 |
| 1 | 02JAN| 54 |
| 1 | 03JAN| 23 |
| 1 | 04JAN| 43 |
Table B
| ID | date | details|
| 1 | 01JAN| x |
| 1 | 03JAN| y |
想要的产出
Table A
| ID | date | amount | details |
| 1 | 01JAN| 56 | x |
| 1 | 02JAN| 54 | x |
| 1 | 03JAN| 23 | y |
| 1 | 04JAN| 43 | y |
对于1月2日的条目,截至该日期的最新可用详细信息为“x”,对于1月3日的条目为“y”
提前感谢您提供的任何指导这将适用于您提出的问题:
data want;
retain details_last;
merge table1 table2;
by ID date;
if not missing(details) then details_last = details;
else details = details_last;
drop details_last;
run;
但只有当您的数据满足您提出的条件时,这才有效,如表B中的日期范围应始终在表A中的日期范围内,而不是在表A之外(即,仅插值,无外推) 你能添加一些数据吗examples@SanekZhitnik您可以使用retain语句来准备表B。然后使用merge语句。谢谢!这只是插值(对于任何ID,表A中的最新日期总是晚于表B中的最新日期)。有不止一个细节栏(detail1、detail2等),但我将尝试调整它。