楼主: longway999
1892 7

求助 [推广有奖]

  • 0关注
  • 0粉丝

大专生

55%

还不是VIP/贵宾

-

威望
0
论坛币
885 个
通用积分
0.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
561 点
帖子
27
精华
0
在线时间
65 小时
注册时间
2005-8-17
最后登录
2023-11-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

初学SAS,有个小问题,向大家求教:

有10个0-1变量,x1-x10,想得到如下统计表

变量

Frequency(等于1的频数)

=1的百分比

X1

X2

X3

X4

X5

X6

X7

X8

X9

X10

怎么写啊?麻烦指导一下啊

二维码

扫码加我 拉你入群

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

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

关键词:Frequency freq Ency 统计表 小问题 百分比 统计表

沙发
kofsphere 发表于 2007-9-2 22:28:00 |只看作者 |坛友微信交流群

前几天不小心发了一些重复的帖子,被狂扣分,靠

还有发一个sas web的,结果点成了macro的一本书,还被人骂是骗子,郁闷

穷疯了,只有帮楼主写东西了。。。版主,请加分吧,我等着那100元买书啊!!!!!!!!!!!!!!!

ps:用proc freq也可以写,不过为了赶时间就讲究了吧,希望你能看得懂。。。




data aa ;
input x1-x10 ;
datalines ;
1 0 1 0 1 0 1 1 1 1
0 1 0 0 0 0 0 0 0 0
1 1 1 1 0 1 0 1 0 1
1 0 1 1 0 0 0 0 1 1
;
run ;
* 这个是定义你的数据 ;


data aa1 ;
set aa ;
array xn[10] x1 - x10 ;
do i = 1 to 10 ;
new= xn ;
id = i ;
output ;
end ;
keep new id ;
run ;
* 纵向拆分 ;
proc sort data = aa1 ;
by id ;
run ;
proc means data = aa1 noprint ;
by id ;
var new ;
output out= aa2
mean= ;
run ;
data final (rename= (id = x _freq_= frequency_of_one new= percentage_of_one ));
set aa2 ;
_freq_ = _freq_*new ;
drop _type_ ;
run ;

*整理成你要的格式 ;

[此贴子已经被作者于2007-9-2 22:33:18编辑过]

使用道具

藤椅
longway999 发表于 2007-9-2 22:52:00 |只看作者 |坛友微信交流群

好人啊,谢谢阿,你老兄要真急用100元买书,我正好前段时间卖书赚了一点小钱,

可以送你一百,说不准以后还有问题向你请教呢:) 只是我不知道怎么转给你100,

或者你随便发个100元的出售帖,我就可以给你100了.

使用道具

板凳
eijuhz 发表于 2007-9-3 05:56:00 |只看作者 |坛友微信交流群
已经奖励

使用道具

报纸
liujx80 发表于 2007-9-5 01:11:00 |只看作者 |坛友微信交流群
that's too complicated. One of the simpler soluation could be :
data aa ;
input x1-x10 ;
datalines ;
1 0 1 0 1 0 1 1 1 1
0 1 0 0 0 0 0 0 0 0
1 1 1 1 0 1 0 1 0 1
1 0 1 1 0 0 0 0 1 1
;
data aa1;
set aa;
array one x1-x10;
array two xx1-xx10;
do i= 1 to 10;
if one(i) ne 1 then two(i)=.;
else two(i)=one(i);
end;
proc means data = aa1 n mean;
run;
Then you can find the answer in the output.

使用道具

地板
kofsphere 发表于 2007-9-5 03:05:00 |只看作者 |坛友微信交流群

楼上的构思巧妙,但是既然要写就要写完整啊。

使用道具

7
liujx80 发表于 2007-9-5 04:03:00 |只看作者 |坛友微信交流群
I feel embarrased. Your is better than mine. Having result is one thing and having a good usable output is another aspect.

data aa ;
input x1-x10 ;
datalines ;
1 0 1 0 1 0 1 1 1 1
0 1 0 0 0 0 0 0 0 0
1 1 1 1 0 1 0 1 0 1
1 0 1 1 0 0 0 0 1 1
;
data aa1;
set aa;
array one x1-x10;
array two xx1-xx10;
do i= 1 to 10;
if one(i) ne 1 then two(i)=.;
else two(i)=one(i);
end;
run;

proc means data = aa1 nway;
output out=work n= mean=/autoname;
run;
data work1;
set work;
length var_name $ 4;
array one x1_Mean x2_Mean x3_Mean x4_Mean x5_Mean x6_Mean x7_Mean x8_Mean x9_Mean x10_Mean;
array two xx1_N xx2_N xx3_N xx4_N xx5_N xx6_N xx7_N xx8_N xx9_N xx10_N;
do i=1 to 10;
freq = two(i) ;
Percent = one(i) ;
var_name = 'x'||compress(i);
output;
end;
keep var_name freq percent;
run;

ods csv file= "result.csv";
proc print data = work1 noobs;
run;
ods close;

使用道具

8
phinex 发表于 2007-9-5 13:47:00 |只看作者 |坛友微信交流群
楼上强人啊

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 21:45