一个简单的问题,我有以下类型的数据:
Ticker _ Date _ Fem Analyst(虚拟1如果为真)___那个月的变量就像beta
AA _ 01/04/2001 _ 1 ___ 0.61
AA _ 05/04/2001 _ 1 ___ 0.62
AA _ 08/04/2001 _ 1 ___ 0.63
AA _ 01/05/2002 _ 1 ___ 0.7
AA _ 04/05/2002 _ 1 ___ 0.71
AA _ 08/07/2002 _ 0 ___ 0.8
AA _ 07/04/2003 _ 1 ___ 0.4
依此类推。我想收到的内容如下:
Ticker _ Date fem分析师数量 男性分析师人数_ 总___变量
AA _ 04/2001 3 0 _ 3 ___ 0.63 < / p>
AA _ 05/2002 2 0 _ 2 ___ 0.71 < / p>
AA _ 07/2002 0 1 _ 1 ___ 0.8 < / p>
AA _ 04/2003 1 0 _ 1 ___ 0.4 < / p>
这是一个计数算法,允许我计算每个月某个公司的女性和男性分析员的数量(使用虚拟变量性别0或1)并删除该月的所有观察,除了最近的一个(例如08/04/01这变成04/01与0.63,这是公司AA公司04/01测试版的最新观察结果。这个例子解释了这一切我猜?
有什么想法吗?
答案 0 :(得分:1)
你可能想要这样的东西:
/* Create the month variable into a string YYYY/MM */
data analysts0;
set <your data>;
format month $7.;
month=cats(year(date),'/',put(month(date),z2.));
run;
/* Sort so you can do the by processing required for counting */
proc sort data=analyst0 out=analyst1;
/* You need to include the date in the sort so the most recent is last */
by ticker month date;
run;
/* Count */
data count;
retain n_fem n_male 0;
set analyst1;
by ticker month;
if first.ticker of first.month then do;
n_fem=0;
n_male=0;
end;
else do;
if gender=1 then n_fem+1;
else if gender=0 then n_male+1;
else put 'Huh?';
end;
/* this outputs only the values you need.*/
if last.ticker or last.month then output;
run;
这应该给你一般的想法 - 我现在无法访问SAS,所以我无法检查代码。有关更多详细信息,请参阅数据步骤中的保留和处理文档。