全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3419 5
2018-08-11
有四个变量:ticker,estimid,analyst,revdatsyear,需要统计在同一个ticker同一个estimid同一个analyst的情况下,revdatsyear出现的不同年份。
比如:
ticker estimid analyst revdatsyear
0001  AAA       J          1999
0001  AAA       J          2000
0001  AAA       J          2000
0001  CCC       A         2004

希望得到的结果
ticker estimid analyst revdatsyear count(revdatsyear)
0001  AAA       J          1999           2
0001  AAA       J          2000           2
0001  AAA       J          2000           2
0001  CCC       A         2004           1


即ticker 0001,estimid AAA,analyst J,revidats有1999(1次),2000(2次),数出来的revdatsyear等于2,而不是等于3

二维码

扫码加我 拉你入群

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

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

全部回复
2018-8-11 21:51:35
简单。其实就是Excel表格中的分类汇总。

利用 if first.variable 语句完成,代码如下:
复制代码

二维码

扫码加我 拉你入群

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

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

2018-8-15 14:16:19
这个有BUG   如果是不同编号的 相同年份,可能出错
二维码

扫码加我 拉你入群

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

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

2018-8-15 17:04:32
谢谢大家,问题已解决,用的code如下,思路有点麻烦:
proc sort data =analystchara1 out=analystchara2;
        by ticker estimid analyst revdatsyear;
run;
data analystchara2;
        set analystchara2;
        by ticker estimid analyst revdatsyear;
        if first.revdatsyear then Count = 1;
        else Count=0;
run;
proc sql;
create table analystchara3 as
select *,sum(count)as FIRM_EXP
from analystchara2
group by ticker,estimid,analyst;
quit;
二维码

扫码加我 拉你入群

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

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

2018-8-17 12:33:31
也可以不用proc sql。
data work.t;
input ticker $ estimid $ analyst $ revdatsyear;
datalines;
0001 AAA J          1999
0001 AAA J          2000
0001 AAA J          2000
0001 CCC A          2004
;
run;

proc sort data=work.t out=work.t1 nodup;
by estimid analyst revdatsyear;
run;

data work.t1 (drop=revdatsyear);
set work.t1;
by estimid analyst revdatsyear;
if first.analyst then count=0;
count + 1;
if last.analyst;
run;


data work.t2;
merge t t1;
by descending analyst;
run;
二维码

扫码加我 拉你入群

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

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

2018-8-22 19:09:25
steven_1017 发表于 2018-8-17 12:33
也可以不用proc sql。
data work.t;
input ticker $ estimid $ analyst $ revdatsyear;
谢谢~这种方法也好用
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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