全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2021 7
2016-10-31
悬赏 150 个论坛币 已解决

sas中,怎样逐年统计每个名字累计出现的年数(nianshu)和截至该年份累计出现的次数(zongji),请教各位大神!本人初学,能告知完整的代码吗

原数据集

data  a

num   year  name

01    2005  LH

02    2005  ZR

03    2005  LH

04    2006  ZR

05    2006  ZR

06    2006  LM

得到的数据集

Data  b

num   year  name   nianshu   zongji

01    2005  LH       1       2

02    2005  ZR       1       1

03    2005  LH       1       2

04    2006  ZR       2       3

05    2006  ZR       2       3

06    2006  LM       1       1


最佳答案

l1i2n3i4n5g 查看完整内容

data a; input num $ year name $; cards; 01 2005 LH 02 2005 ZR 03 2005 LH 04 2006 ZR 05 2006 ZR 06 2006 LM ; run; proc sort data=a nodupkey out=a1; by name year; run; data a2; set a1; by name; if first.name then nianshu=1; else nianshu+1; run; proc sort data=a out=b1; by name year; run; data b2; set b1; by name year; if first.name then zongj ...
二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-31 21:41:09
data a;
input num $ year name $;
cards;
01    2005  LH
02    2005  ZR
03    2005  LH
04    2006  ZR
05    2006  ZR
06    2006  LM
;
run;

proc sort data=a nodupkey out=a1;
by name year;
run;

data a2;
set a1;
by name;
if first.name then nianshu=1;
else nianshu+1;
run;

proc sort data=a out=b1;
by name year;
run;

data b2;
set b1;
by name year;
if first.name then zongji=1;
else zongji+1;
if last.year;
run;

proc sql;
create table wanted as
select *
from a left join a2
on a.year=a2.year and a.name=a2.name;
run;
create table wanted as
select *
from wanted left join b2
on wanted.year=b2.year and wanted.name=b2.name;
quit;

proc sort data=wanted;
by num;
run;
二维码

扫码加我 拉你入群

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

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

2016-10-31 23:17:22
先SORT BY NAME,求出累计年数;在sort year,求出次数,用if first.v then num=1;esle num+1求
二维码

扫码加我 拉你入群

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

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

2016-10-31 23:20:59
实现这个程序的算法太多了, 我这里给出两种供楼主选择.

复制代码


楼主记得评选给论坛币哦. 急需.
二维码

扫码加我 拉你入群

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

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

2016-11-1 08:02:20
the_fly_winds 发表于 2016-10-31 23:20
实现这个程序的算法太多了, 我这里给出两种供楼主选择.
这个不是逐年统计的结果哈,是每个姓名下的合计数
二维码

扫码加我 拉你入群

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

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

2016-11-1 11:04:34
我是分步实现的,不知道是否合你意。
逐年每个名字出现的年数:
复制代码
结果:
Obs    num    year    name    nianshu

1      1     2005     LH        1
2      6     2006     LM        1
3      2     2005     ZR        1
4      4     2006     ZR        2


截止该年份累计出现的次数:
复制代码
结果:
name          year    zongji
----------------------------
LH            2005         2
LM            2006         1
ZR            2005         1
ZR            2006         3


这样得到的结果,条数和之前的不一样,要想跟之前的一样,可以再merge回去。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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