我运行以下代码:
PROC MEANS DATA=count;
class advertiser;
var date;
output out = countdata N=Count;
RUN;
数据集输出为我提供了变量Advertiser,Count, Type , Freq 。我想知道如何在不对数据集进行任何分析的情况下将其他变量保留在数据集中。例如,只需保留列出所有日期的日期变量。
答案 0 :(得分:4)
PROC MEANS
有ID
声明,可让您执行一些您要求的内容。
由于PROC MEANS
汇总数据,如果您希望每class
个值有多行,则无法直接获取;您最好的办法是使用PROC MEANS
将merge
结果合并到数据集中。
但是,如果您希望每个类值只有一行,并且您的变量对于同一个类变量总是相同的,或者您可以使用最大/最小值,那么您可以选择。
如果每个(类变量的值)只有一个值,则只需将变量添加到class
语句或by
语句即可。如果你有很多类值,后者在某些情况下可能会更好(因为它会占用更多的资源来将它用作类而不是)。
如果您确实有多个值(或可能),并且不想在class
或by
语句中使用它,那么您可以使用ID
语句。默认情况下,将最大值放在输出数据集上(或IDMIN
语句中的PROC
选项,将最小值设置为。)
proc means data=sashelp.class;
class age;
types age;
id name;
var height weight;
output out=classvars mean=;
run;
id变量name
对此有点愚蠢,但它显示了示例。
答案 1 :(得分:1)
PROC MEANS是按类变量汇总的。如果您想在输出数据集中有更多变量,可以在类语句中列出它们。 PROC SQL将允许您按分组变量计算计数,然后输出与添加了计数列的输入数据集具有相同记录数的数据集("重新汇总的统计信息")。这些都是你想要的:
proc means data=sashelp.class nway;
class sex age;
var height;
output out = want N=Count_Height;
run;
proc sql;
create table want2 as
select *,count(height) as Count_Height
from sashelp.class
group by sex
;
quit;