SAS代码,用于在缺少预期值时在表中添加行

SAS代码,用于在缺少预期值时在表中添加行,sas,Sas,我对SAS很天真。我使用PROC-SQL管理了前面的其他步骤。我的表有3列 code count Fruit 0 56 Apple 6 58 orange 7 676 orange 在表格中为没有code=0值的每个产品(水果)添加一行,然后在表格中为eg添加count=0,额外的行将是 code count Fruit 0 0 orange

我对SAS很天真。我使用PROC-SQL管理了前面的其他步骤。我的表有3列

 code     count    Fruit
  0         56      Apple
  6         58      orange
  7         676    orange 
在表格中为没有code=0值的每个产品(水果)添加一行,然后在表格中为eg添加count=0,额外的行将是

 code      count    Fruit
  0          0      orange 
像这样开始代码

Data table2;
SET table1;
IF code NE 0 then do;

您可以按CODE的果值和降序值对数据进行排序,当某个果值的最后一条记录没有CODE=0时,请添加一条记录

proc sort data=have out=want ;
   by fruit descending code ;
run;
data want ;
  set want ;
  by fruit ;
  output;
  if last.fruit and code ne 0 then do;
     code=0; count=0; output;
  end;
run;

搜索Preload FMT或CLASSDATA以了解如何添加0值。要记住的是,计算机是愚蠢的。如果它不在那里,它怎么知道它应该在那里呢?你必须以某种方式告诉它,不幸的是,这确实意味着你需要以某种方式列出它。所有可能的水果值是否都存在于数据中,但可能与代码的其他值一起不是零?如果没有,那么还有其他来源可以找到水果的所有可能价值吗?零是代码的最低(或最高)可能值吗?是的,表中有所有可能的Fruit值。零是代码的最低值。如果条目中有所有Fruit值和所有代码值,则可以使用稀疏选项,但正如我提到的,如果它不在数据集中,则它将不起作用。此外,您将通过各种级别的水果获得各种级别的代码,而这可能不是您想要的。计数是源数据的一部分吗?还是你算计的?如果您正在计算计数,那么也许PROC FREQ中的稀疏选项就是获得零所需的全部?