楼主: moonstone
5783 5

SAS 中计算某一类变量值的频数之和,^_^ [推广有奖]

已卖:1872份资源

讲师

74%

还不是VIP/贵宾

-

威望
0
论坛币
10498 个
通用积分
369.1683
学术水平
160 点
热心指数
169 点
信用等级
124 点
经验
274286 点
帖子
237
精华
1
在线时间
520 小时
注册时间
2007-4-27
最后登录
2024-12-6

楼主
moonstone 发表于 2011-3-21 11:15:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有下面一个数据,怎么用SAS生成下面两个变量啊,同时将结果另存到一个新数据集A中,非常感谢!

sum_event=所有event=1例数之和;(其中freq为频数,计算的时候以freq加权)
P_event_up=所有event=1且up_down=3例数之和 除以 sum_event;

data b;
input event  updown freq  @@;
cards;

1  1  39   

1  2  4   

1  2  0

1  3  15   

1  1  87   

1  2  3

1  3  0   

1  3  14   

1  1  21

0  1  1959   

0  2  148   

0  2  1

0  3  142   

0  1  703  

0  2  25

0  3  0      

0  3  31   

0  1  72

;run;
二维码

扫码加我 拉你入群

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

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

关键词:变量值 Event Input cards Even 变量 SAS 之和 频数

回帖推荐

sanso1988 发表于5楼  查看完整内容

不用sql,也可以的. proc means data=b ; where event=1; output out=a1 sum=sum_event; var freq; proc means data=b ; where event=1 and updown=3; output out=a2 sum=sum_up; var freq; data a; merge a1 a2; data a; set a; p_event=sum_up/sum_event; keep sum_event p_event; run;

本帖被以下文库推荐

沙发
hssnow 发表于 2011-3-21 12:16:40
请问啥叫“例数之和”??
My Blog: http:/hssnow.name/
宁静致远

藤椅
baoaibaobao 发表于 2011-3-21 13:07:31
  1. *method 1:
  2. proc sort data=b;
  3.         by event updown;
  4. run;
  5. data zachary;
  6.         set b(where=(event=1));
  7.         by event updown;
  8.         retain sum_event sum_up;
  9.         if first.event then sum_event=freq;
  10.                 else sum_event=sum_event+freq;
  11.         if first.updown then sum_up=freq;
  12.                 else sum_up=freq+sum_up;
  13.         if last.event then do;
  14.                 P_event_up=sum_up/sum_event;
  15.         output;
  16. end;
  17.         keep sum_event P_event_up;
  18. run;
  19. *method 2:
  20. proc sql;
  21.         create table zachary_1 as
  22.                 select sum(freq) as sum_event,
  23.                 (select sum(freq) from b where event=1 and updown=3)
  24.                                         /(calculated sum_event) as P_event_up
  25.         from b where event=1;
  26. quit;
复制代码

板凳
sanso1988 发表于 2011-3-21 17:40:45
proc sql;
create table a (sum_event num ,p_event_up num)
;
insert into a

set sum_event=(select sum(freq) as n1
from b
group by event
having event=1)

,p_event_up=(select sum(freq) as n2
from b
group by event,updown
having event=1 and updown=3)/sum_event;

quit;

报纸
sanso1988 发表于 2011-3-21 17:46:36
不用sql,也可以的.

proc means data=b ;
where event=1;
output out=a1 sum=sum_event;
var freq;
proc means data=b ;
where event=1 and updown=3;
output out=a2 sum=sum_up;
var freq;
data a;
merge a1 a2;
data a;
set a;
p_event=sum_up/sum_event;
keep sum_event p_event;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
moonstone 发表于 2011-3-21 18:10:37
非常感谢楼上各位,^_^

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 14:42