我正在处理索赔数据,其中我们有四种不同的遭遇类型:牙科,机构,专业和药房。我需要为SAS Proc Tabulate中的不同组织开发单独的报告,这些报告显示了这四种类型的声明。有些组织有四种类型而其他组织只有3.但如果一个计划没有一种特定类型,我仍然需要在报告中显示缺少值和标题。
说计划A只有机构,药房和专业类型,没有牙科索赔。我想展示列出的所有四种类型的牙齿缺失值。这可以通过Proc制表步骤来实现吗? (或者我是否必须修改数据集以为每种类型设置空值?)任何帮助都将非常感激。
这是主要代码:
proc tabulate data=servmnth format=COMMA.0;
class plan_alias encounter_type service_Month;
var netted_claim_count;
format encounter_type $enc.;
table encounter_type= ' ' ALL='Total', sum=' '*netted_claim_count= 'Netted
Claims by Service Month'*service_Month = ' ';
where plan_alias="&plan.";
run;
直到我意识到一些计划直接错过了一两种遭遇类型,这一切都很好。我尝试使用proc格式为遇到类型设置格式,但这不起作用。我想知道在table语句中是否有任何我可以附加到encounter_type变量的内容,无论如何都会显示4行。
答案 0 :(得分:1)
表格的classdata=
应该是您想要在输出中显示的所有维值的显式交叉。类数据可以从允许值列表外部强制执行,也可以从表格之前的data=
生成。
考虑一些样本声明计数数据,具有特殊属性,对于每个计划,encounter_types被限制为一组不同的值。
data claim_counts;
do claim_id = 1 to 1e5;
plan_id = floor(16 * ranuni(123));
if plan_id = 0 then continue;
date = mdy(ceil(12*ranuni(123)),1,2017);
claim_count = ceil(abs(12*rannor(123)));
member_id = 1e8 + plan_id * 1e6 + floor(1e6 * ranuni(123));
do until (band(plan_id,2**(encounter_type-1)));
encounter_type = ceil(4*ranuni(123));
end;
output;
end;
format date yymmd.;
run;
可以从不同的允许值列表构建类数据
* preordained, external class data (defined dimension data);
data plans;
do plan_id = 0 to 15;
output;
end;
run;
data encounter_types;
do encounter_type = 1 to 4;
output;
end;
run;
data months;
do month = 1 to 12;
date = mdy(month,1,2017);
end;
format date yymmd.;
run;
* cross all allowed dimensional values for defined coverage;
proc sql;
create table classdata as
select plan_id, encounter_type, date
from plans, encounter_types, months;
quit;
或者根据数据中观察到的维度覆盖率构建
proc sql;
create table classdata2 as
select plan_id, encounter_type, date
from (select distinct plan_id from claim_counts)
, (select distinct encounter_type from claim_counts)
, (select distinct date from claim_counts)
;
在大型数据集中,观察到的覆盖范围很可能与定义的覆盖范围匹配
最后,使用classdata=
语句中的tabulate
选项。在下文中,我还将plan_id添加到页面维度
proc tabulate data=claim_counts classdata=classdata;
class plan_id encounter_type date;
var claim_count;
table
plan_id
,
encounter_type = 'type' ALL
,
sum = ' ' * claim_count*f=comma9. * date = ' '
;
;
run;
页面维度允许您一次为多个plan_id创建输出,它将标识下表所属的计划。计划识别也可以使用by语句或标题声明完成。