我有下面的数据集作为输入组通过SAS
ID
--
1
2
2
3
4
4
4
5
,需要一个新的数据集如下
ID count of ID
-- -----------
1 1
2 2
3 1
4 3
5 1
你能告诉如何在SAS做到这一点wihtout使用PROC SQL ?
我有下面的数据集作为输入组通过SAS
ID
--
1
2
2
3
4
4
4
5
,需要一个新的数据集如下
ID count of ID
-- -----------
1 1
2 2
3 1
4 3
5 1
你能告诉如何在SAS做到这一点wihtout使用PROC SQL ?
试试这个:
DATA Have;
input id ;
datalines;
1
2
2
3
4
4
4
5
;
Proc Sort data=Have;
by ID;
run;
Data Want;
Set Have;
By ID;
If first.ID then Count=0;
Count+1;
If Last.ID then Output;
Run;
或者怎么样PROC频率或PROC总结?这些避免了必须预先处理数据。
proc freq data=have noprint;
table id/out=want1 (drop=percent);
run;
proc summary data=have nway;
class id;
output out=want2 (drop=_type_);
run;
PROC SORT DATA=YOURS NOPRINT;
BY ID; RUN;
PROC MEANS DATA=YOURS;
VAR ID;
BY ID;
OUTPUT OUT=NEWDATASET N=; RUN;
您也可以选择只保留ID和你的newdataset ñ变量。
如果你想要做的聚集是复杂的,然后用PROC SQL只去像我们比较熟悉的集团在SQL
proc sql ;
create table solution_1 as select distinct ID, count(ID)
from table_1
group by ID
order by ID
;
quit;
OR
这只是拖动&下降ü要聚集的列和选择要像平均执行任何操作摘要选项,计数,小姐,NMiss等。
嗨,这是我的第一个答案。你能告诉我答案的错误或Downvoting的原因吗?谢谢.. – 2016-11-17 13:24:40
当然,首先,深入研究一下这个问题:“如何在不使用PROC SQL的情况下在SAS **中执行此操作?”**其次,您重复了第三个答案。 – McNets 2016-11-17 15:42:40
重复的原因就像我想说的一样...我只是想添加一个点,如果一个人使用SAS EG,他/她可以使用查询生成器进行此类分析。 – 2016-11-17 17:31:48
我们可以用简单的SQL PROC计数做到这一点:
proc sql;
create table want as
select id, count(id) as count_of_id
from have
group by id;
quit;
这里是另一种可能性,常常被称为陶氏建筑:
Data want;
do count=1 by 1 until(last.ID);
set have;
by id;
end;
run;
很多THANKs !!!!!!!!!!!!!!!!!我已经开始学习SAS数据,我的问题非常简单 – athresh 2012-04-27 14:30:51