全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
16081 10
2014-01-21
悬赏 100 个论坛币 已解决
我想按组统计多个变量的频数。
比如我有数据test。内容如下:
ID a b c d ...
1 10 30 10 20
1 10 10 10 15
2 15 20 10 10
3 10 15 15 15
3 20 15 20 10
3 10 15 20 10
4 15 20 15 15
4 10 10 15 15
5 20 10 30 10
...
一般来说
proc freq data=test;
table a;
run;
这样的话 ID1的 10这个值是两个,
可是我想要的结果是如果同样ID的变量值相同的话只算一个。
就是说proc freq后变量a的结果是
10这个值会出现3次而不是5,
而变量b的15这个值会出现1次而不是3。
变量有很多从a~z,在data步一个变量一个变量去除重复很麻烦,而且花时间。
ods也试过数据太大,机器带不动。请问有没有更有效率的方法?

最佳答案

huntdreamer 查看完整内容

data test; input ID a b c d@@; cards; 1 10 30 10 20 1 10 10 10 15 2 15 20 10 10 3 10 15 15 15 3 20 15 20 10 3 10 15 20 10 4 15 20 15 15 4 10 10 15 15 5 20 10 30 10 ; run; proc sql; select b, count(b) as count from (select distinct ID,b from test) group by b ; quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-1-21 13:08:53
data test;
input ID a b c d@@;
cards;
1 10 30 10 20
1 10 10 10 15
2 15 20 10 10
3 10 15 15 15
3 20 15 20 10
3 10 15 20 10
4 15 20 15 15
4 10 10 15 15
5 20 10 30 10
;
run;
proc sql;
select b, count(b) as count
from
(select distinct ID,b
from test)
group by b
;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-21 13:34:44
按照你上面表达,ID 相同情况下只计算一次的话,10只出现了3次!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-21 13:38:28
不好意思,是3次
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-21 13:53:27
a,b,c,d....你替换下就行了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-21 14:06:36
我的理解是这样的:如果ID和a一样的 不管其他变量是否相同,楼主只想保留第一次出现的observation,然后统计?如果我的理解是对的,可以使用proc sort的nodupkey选项,之后再用proc freq:
data test;
input ID a b c d@@;
cards;
1 10 30 10 20
1 10 10 10 15
2 15 20 10 10
3 10 15 15 15
3 20 15 20 10
3 10 15 20 10
4 15 20 15 15
4 10 10 15 15
5 20 10 30 10
;
run;

proc sort data=test nodupkey out=test1;
by ID a;
run;

proc freq data=test1;
table a;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群