楼主: lemonxinran
4161 11

sas如何生成一个新的变量,表示两个相同变量出现了几次 [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2013-1-10 15:54:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有一组数据,tran_id fyear
                         1       2000
                         1       2000
                          2     2001
                          2     2001
                          2     2001
                         ......
现在需要计算,同一tran_id和fyear出现了几次,并生成一个新变量,例如:
                         tran_id fyear    n

                         1       2000       2
                         1       2000       2
                          2     2001         3
                          2     2001         3
                          2     2001         3

在sas中如何实现?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:year 如何实现 RAN ear 新变量 如何

沙发
ziyenano 发表于 2013-1-10 16:04:55
data ex;
input
tran_id fyear;
cards;
1     2000
1     2000
2     2001
2     2001
2     2001
;
run;

proc sql;
create table ex1 as
select t.*,t1.count
from ex t
inner join
(select *,count(1) as count from ex
group by tran_id,fyear) as t1
on t.tran_id=t1.tran_id
and t.fyear=t1.fyear;
quit;

藤椅
lemonxinran 发表于 2013-1-10 16:33:06
ziyenano 发表于 2013-1-10 16:04
data ex;
input
tran_id fyear;
请问count(1)是什么意思?谢谢了!

板凳
ziyenano 发表于 2013-1-10 16:39:10
根据group by后面的分组,每一组的计数

报纸
guo.bailing 发表于 2013-1-10 16:58:37
  1. data temp;
  2. input tran_id $ year @@;
  3. cards;
  4. 1  2000
  5. 1  2000
  6. 2  2001
  7. 2  2001
  8. 2  2001
  9. 3  2002
  10. 3  2002
  11. ;
  12. run;
  13. proc freq data=temp ;
  14.         table tran_id * year /out=temp1;
  15. run;
  16. proc print data=temp1;
  17. run;
复制代码

Obs

tran_id

year

COUNT

PERCENT

1

1

2000

2

28.5714

2

2

2001

3

42.8571

3

3

2002

2

28.5714




自助者,天助之!

地板
lemonxinran 发表于 2013-1-10 18:07:11
ziyenano 发表于 2013-1-10 16:39
根据group by后面的分组,每一组的计数
哦,明白了,谢谢!

7
lemonxinran 发表于 2013-1-10 18:21:24
guo.bailing 发表于 2013-1-10 16:58
嗯,非常感谢!

8
bobguy 发表于 2013-1-11 07:37:17
ziyenano 发表于 2013-1-10 16:04
data ex;
input
tran_id fyear;
It can be simplified as,


proc sql;
select *, count(tran_id) as cnt
from ex
group 1
;
quit;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

9
yzsxdlcc 发表于 2013-1-11 09:26:16
  1. data have;
  2. input id year;
  3. cards;
  4. 1  2000
  5. 1  2000
  6. 2  2001
  7. 2  2001
  8. 2  2001
  9. 3  2002
  10. 3  2002
  11. ;
  12. run;

  13. proc sort data=have;
  14. by id year;
  15. run;

  16. data want;
  17. set have;
  18. by id year;
  19. if first.id then cnt=0;
  20. cnt+1
  21. if last.id then output;
  22. run;

  23. proc print data=want;
  24. run;
复制代码
从骨感走向丰满

文库

10
ziyenano 发表于 2013-1-11 09:35:38
bobguy 发表于 2013-1-11 07:37
It can be simplified as,
it works,THX very much

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 15:02