在 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;