我在组中有一个变量,我们会说它们是颜色。我只需要选择颜色与5-10的观察。然后,我将对每一组进行测试。我该怎么做呢?
我使用的是SAS大学版。
发布于 2015-09-22 15:31:30
如果您的意思是您有一个定义组的变量,比如一个名为COLOR的变量,其值为'RED‘和'GREEN’。然后,如果您只想为至少有5个观察的组选择观察,则必须计算每个组的观测数。
由于你没有发布任何样本数据,让我们使用SASHELP.CLASS,它有一个可变的性别,可以用来分组9名女生和10名男生。因此,让我们编写一个查询,只返回至少10个观察组(男学生)。
这非常容易使用PROC,使用GROUP和HAVING子句。
proc sql;
create table want as
select * from sashelp.class
group by sex
having count(*) > 9
;
quit;请注意,这在SAS中运行良好,但在其他SQL实现中可能不起作用。
发布于 2015-09-22 18:56:39
“谢谢你,”汤姆。我完全没有想过要使用我刚刚创建的新桌子。有一段时间了。只是想跟进我所做的事:
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;发布于 2015-09-22 15:12:31
您也可以使用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;https://stackoverflow.com/questions/32719506
复制相似问题