我有3个由ID列链接的数据集
版本SAS 9.2
D1(2个cols)(ID col是唯一的)
ID Value
1 81
2 81
3 82
4 82
5 81
6 78
D2(3门)
ID Line Code
1 1 651
1 2 652
1 3 655
2 1 650
2 2 652
3 1 651
3 2 655
3 3 651
3 4 658
4 1 651
4 2 651
D3(2门)
ID Vcode
1 A
1 B
2 A
2 C
3 B
3 D
我想要一个结果数据集,其中包含来自所有数据集的cols,标准为
结果数据集就像
ID Value Line Code Vcode
2 81 1 650 A
2 81 2 652 C
3 82 1 651 B
3 82 2 655 D
3 82 3 651 -
3 82 4 658 -
我正在为每个步骤编写数据步骤,但我正在寻找一个可以组合所有逻辑的数据步骤或proc SQL
**
2017年10月20日编辑
**
以下是我所做的。数据集D1 ... D3只是我问题的别名,下面是实际的。
我需要在我的第二个proc sql语句中从D2获取记录,其中并非所有'line'都具有四个'代码'651,652,655或656中的一个,但我认为我的proc sql不正确。我想排除那些。这就是为什么我的结果数据集没有'ID'为1和4的记录。就这样做而言,一个datastep很好,但不止一个很好。
libname SAF "F:\Databases\SAF\sasdata\2015";
libname out "F:\projects\0122_Oct17\SASDATA";
Options symbolgen mlogic mprint;
Options obs=max;
proc contents data=SAF.Hosp_claimsj_lds;
run;
Data OUT.Hospice_TOB_81x82x;
Set SAF.Hosp_claimsj_lds (keep = CLAIM_NO PRVDR_NUM CLM_THRU_DT CLM_FAC_TYPE_CD CLM_SRVC_CLSFCTN_TYPE_CD CLM_FREQ_CD CLM_PMT_AMT);
WHERE CLM_FAC_TYPE_CD = '8' and CLM_SRVC_CLSFCTN_TYPE_CD in ('1','2'); /* TOB 81x and 82x */
TOB = CATT(OF CLM_FAC_TYPE_CD CLM_SRVC_CLSFCTN_TYPE_CD CLM_FREQ_CD);
Run;
proc sql;
create table out.Hospice_TOB_81x82x_ValCd as
select *
from SAF.Hosp_instval_lds
Where Claim_no in (Select Claim_no from out.Hospice_TOB_81x82x);
quit;
proc sql;
create table out.Hospice_TOB_81x82x_RevCd as
select *
from SAF.Hosp_revenuej_lds
Where Claim_no in (Select Claim_no from out.Hospice_TOB_81x82x)
and REV_CNTR NOTIN ('651', '652', '655','656');
quit;
答案 0 :(得分:0)
我想出了这个,几乎产生了所需要的。结果。我希望您能够根据自己的需要进行修改。
data D1;
input ID Value @@;
cards;
1 81 2 81 3 82 4 82 5 81 6 78
;
run;
data D2;
input ID Line Code @@;
cards;
1 1 651 1 2 652 1 3 655 2 1 650 2 2 652 3 1 651
3 2 655 3 3 651 3 4 658 4 1 651 4 2 651
;
run;
data D3;
input ID Vcode $ @@;
cards;
1 A 1 B 2 A 2 C 3 B 3 D
;
ruN;
data one;
merge D1(in=a) D2(in=b);
by id;
if a and b;
if value in (81 82);
if code not in (651 652 655 656 );
run;
data two;
merge D2 D3;
by id;
run;
data almost wanted;
merge one (in=a) two(in=b);
by id ;
if a;
run;