【问题标题】:List variables with zero frequencies - Proc Freq or Proc Tabulate列出频率为零的变量 - Proc Freq 或 Proc Tabulate
【发布时间】:2019-07-12 12:12:56
【问题描述】:

我正在选择一组邮政编码,以通过二乘二表格按年龄组列出频率计数。我想列出频率计数为零的邮政编码,以便整个选定的邮政编码组和一组可能的年龄组组合(有 5 个年龄组)出现在最终表格中。

这是我尝试使用 Proc Freq 的代码。这目前仍然没有列出所有可能的组合。

proc freq data = join;
where group_1 = 1 and ZIP in ('20814' '20815' '20816' '20817' '20832' 
'20850' '20851' '20852' '20853' '20866') and Race_n = 'NH-Black';
tables ZIP*agegrp / nocol norow nopercent sparse list;
title "Disease Mortality Counts 2016 By Race";
run;

【问题讨论】:

  • 它列出了什么,没有列出什么?
  • 其中一个年龄组没有任何计数,因此 proc freq 根本没有列出该年龄组。
  • 那个年龄组在数据中的某个地方?如果它不在数据中,则需要使用 CLASSDATA 或 PRELOADFMT 方法。你能提供发生这种情况的样本数据吗?

标签: sas


【解决方案1】:

Proc TABULATE

您需要一个classdata 表,其中列出了类组合的所有可能值。

例如:

data all_ages;
  do age = 18 to 65;
    output;
  end;
run;

data patients;
  do patid = 1 to 10000;
    do until (age not in (19, 23, 29, 31, 37, 41, 43,  47, 53, 59));
      age = 18 + int((65-17) *ranuni(123));
    end;
    output;
  end;
run;

proc format;
  value misszero .=0 other=[best12.];

proc tabulate data=patients classdata=all_ages;
  class age ;
  table age, n*f=misszero.;
run;

触发频率

用 classdata 修改数据,并为 classdata 项分配零权重。在weight 语句中允许零作为权重。

data patients_v;
  set
    patients
    all_ages (in=zero)
  ;
  unity = 1 - zero;
run;

proc freq data=patients_v;
  table age;
  weight unity / zeros ;
run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多