在 SAS 中为空行时显示 'NA'
Displaying 'NA' when it's an empty row in SAS
这是给定的数据
Company_NO Hierarchy_1 Hierarchy_2
1234 Insurance A
1234 Insurance A
1234 Auto B
5678 Claims B
5678 Claims B
5678 New C
在上面的 table 中,列 hierarchy_2 具有三个不同的值 A、B、C。在上面的示例中,对于 company_no=1234,由于 hierarchy_2='C' 没有行,因此该行应该仍然出现。即company_no=1234,hierarchy_1='NA',hierarchy_2='C'
预期输出:
Company_NO Hierarchy_1 Hierarchy_2
1234 Insurance A
1234 Insurance A
1234 Auto B
1234 NA C
5678 Claims B
5678 Claims B
5678 New C
5678 NA A
正如您在上面看到的,只要有空行,就会添加一个额外的行 hierarchy_1='NA' 。请帮忙!谢谢!
一个选项是首先创建 company_no 和 hierarchy_2 的所有组合,然后在 table:
上加入你的数据集
data have;
length company_no 8. hierarchy_1 hierarchy_2 ;
input company_no hierarchy_1 $ hierarchy_2 $;
datalines;
1234 Insurance A
1234 Insurance A
1234 Auto B
5678 Claims B
5678 Claims B
5678 New C
;
run;
proc sql;
create table want as
select a.company_no
,case when missing(c.hierarchy_1) then "NA"
else c.hierarchy_1
end as hierarchy_1
,b.hierarchy_2
from (select distinct company_no from have) as a
cross join (select distinct hierarchy_2 from have) as b
left join have as c
on a.company_no = c.company_no and
b.hierarchy_2 = c.hierarchy_2
;
quit;
这是给定的数据
Company_NO Hierarchy_1 Hierarchy_2
1234 Insurance A
1234 Insurance A
1234 Auto B
5678 Claims B
5678 Claims B
5678 New C
在上面的 table 中,列 hierarchy_2 具有三个不同的值 A、B、C。在上面的示例中,对于 company_no=1234,由于 hierarchy_2='C' 没有行,因此该行应该仍然出现。即company_no=1234,hierarchy_1='NA',hierarchy_2='C'
预期输出:
Company_NO Hierarchy_1 Hierarchy_2
1234 Insurance A
1234 Insurance A
1234 Auto B
1234 NA C
5678 Claims B
5678 Claims B
5678 New C
5678 NA A
正如您在上面看到的,只要有空行,就会添加一个额外的行 hierarchy_1='NA' 。请帮忙!谢谢!
一个选项是首先创建 company_no 和 hierarchy_2 的所有组合,然后在 table:
上加入你的数据集data have;
length company_no 8. hierarchy_1 hierarchy_2 ;
input company_no hierarchy_1 $ hierarchy_2 $;
datalines;
1234 Insurance A
1234 Insurance A
1234 Auto B
5678 Claims B
5678 Claims B
5678 New C
;
run;
proc sql;
create table want as
select a.company_no
,case when missing(c.hierarchy_1) then "NA"
else c.hierarchy_1
end as hierarchy_1
,b.hierarchy_2
from (select distinct company_no from have) as a
cross join (select distinct hierarchy_2 from have) as b
left join have as c
on a.company_no = c.company_no and
b.hierarchy_2 = c.hierarchy_2
;
quit;