选择满足计数条件的变量中的组

时间:2015-09-22 14:24:02

标签: sas

我有一个带组的变量,我们会说它们是颜色。我只需要选择5-10个观察颜色。然后,我将对每个组进行测试。我怎么能这样做呢?

我正在使用SAS大学版。

3 个答案:

答案 0 :(得分:0)

谢谢@Tom。我完全没有考虑使用我刚创建的新表。有一阵子了。只是想跟进我做的事情:

     PROC SORT data=SPEAR.MAN;
      by var1;
     RUN;

     PROC SQL;
       CREATE table COUNT as select * from SPEAR.MAN
       GROUP by var1 having count (*) ge 5;
     QUIT;

     PROC CORR data=WORK.COUNT spearman nosimple;
       var var2 var3;
       by var1;
      RUN;

答案 1 :(得分:-1)

您也可以使用proc sql执行此操作。以下方法将允许您保留所有观察结果,但可以根据需要灵活地在过程中应用过滤器。

have
_________________
grouping y1 x1 x2 
1        5  10 20
1        6  20 40
2        7  30 60
2        4  40 0
2        6  50 1
_________________

proc sql noprint;
    create table want as
         select t1.grouping, y1, x1, x2, nobs
         from have as t1
         LEFT JOIN
              (select grouping, count(y1) as nobs
               from have
               group by grouping) as t2
         ON t1.grouping= t2.grouping
         order by t1.grouping
    ;
quit;

这将为您提供一个看起来如此的数据集:

want
______________________
grouping y1 x1 x2 nobs
1        5  10 20 2
1        6  20 40 2
2        7  30 60 3
2        4  40 0  3
2        6  50 1  3

现在,您可以使用您想要使用的nobs在此数据集上使用新变量proc来应用过滤器。例如:

proc glm data=want;
    where nobs between 5 and 10;
    class grouping;
    model y1 = x1 x2;
run;

答案 2 :(得分:-1)

如果你的意思是你有一个DEFINES组的变量,比如名为COLOR的变量,其值为' RED'和' GREEN'。然后,如果您只想选择具有至少5个观察值的组的观察值,则必须计算每个组的观察数量。

由于您没有发布任何样本数据,因此我们使用SASHELP.CLASS,它具有可变SEX,可用于分组为9名女性和10名男性学生。因此,让我们写一个查询,只返回至少有10个观察组(男学生)。

使用GROUP BY和HAVING子句,使用PROC SQL非常容易。

proc sql;
  create table want as 
  select * from sashelp.class
  group by sex
  having count(*) > 9 
  ;
quit;

请注意,这在SAS中运行良好,但在其他SQL实现中可能无效。