楼主: 6皮皮9
10128 11

计算变量中位数 [推广有奖]

  • 3关注
  • 3粉丝

已卖:187份资源

硕士生

70%

还不是VIP/贵宾

-

威望
0
论坛币
2183 个
通用积分
2.8500
学术水平
14 点
热心指数
10 点
信用等级
9 点
经验
748 点
帖子
155
精华
0
在线时间
187 小时
注册时间
2008-12-7
最后登录
2023-12-3

楼主
6皮皮9 发表于 2013-2-19 09:45:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教各位高手,我还是想要计算这个中位数,然后比较每个样本的变量和该变量的中位数的大小
data m (keep=M_x1 M_x2);
set test;
if x1>%sysfunc(median(x1)) then M_x1=1;
else M_x1=0;
if x2>%sysfunc(median(x2)) then M_x2=1;
else M_x2=0;
run;
出现的错误是:ERROR: %SYSFUNC 或 %QSYSFUNC 宏函数引用的函数 MEDIAN 中的参数 1 不是数字。
可是%SYSFUNC是可以支持变量的啊,为什么使用X1的时候就不能实现了呢?


二维码

扫码加我 拉你入群

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

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

关键词:中位数 sysfunc median Media Error 计算 样本 median 中位数 如何

沙发
microhard_lmj 发表于 2013-2-19 09:52:28
用excel啥

藤椅
6皮皮9 发表于 2013-2-19 09:56:55
microhard_lmj 发表于 2013-2-19 09:52
用excel啥
恩,用EXCEL是可以完成这个。但是这个是一系列程序中的一小部分而已。需要用SAS来完成

板凳
playmore 发表于 2013-2-19 10:04:06
  1. data have;
  2.         input x y z;
  3. datalines;
  4. 1  2  3
  5. 2  4  4
  6. 3  3  5
  7. ;
  8. run;

  9. /*proc sql noprint;*/
  10. /*        create table want as*/
  11. /*                select *,case*/
  12. /*                        when x GT median(x) then 1*/
  13. /*                        else 0*/
  14. /*                        end as x1,case*/
  15. /*                        when y GT median(y) then 1*/
  16. /*                        else 0*/
  17. /*                        end as y1,case*/
  18. /*                        when z GT median(z) then 1*/
  19. /*                        else 0*/
  20. /*                        end as z1*/
  21. /*                from have;*/
  22. /*quit;*/

  23. proc means data=have median;
  24. var x y z;
  25. output out=fmedian
  26. median=
  27. /autoname;
  28. run;

  29. data want(drop=x_Median y_Median z_Median);
  30.    set have;
  31.    if _n_=1 then set Fmedian(drop=_TYPE_ _FREQ_);
  32.    if x>=x_Median then x=1;
  33.    else x=0;
  34.    if y>=y_Median then y=1;
  35.    else y=0;
  36.    if z>=z_Median then z=1;
  37.    else z=0;
  38. run;
复制代码
中间注释掉的是我开始想用SQL做的程序,后来发现SQL的Median函数不能用于单独的变量,后来改用另外的办法。如果你不用中位数,就可以参考用SQL了,要简单的多。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 热心帮助其他会员

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

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
6皮皮9 发表于 2013-2-19 10:12:07
playmore 发表于 2013-2-19 10:04
中间注释掉的是我开始想用SQL做的程序,后来发现SQL的Median函数不能用于单独的变量,后来改用另外的办法。 ...
哇!!非常感谢!在另一个帖子里面我写了这个问题要处理多变量的问题。
如果我要处理X1到X100这100个变量的时候我该怎么写这个程序呢?
非常感谢!
我会给您论坛币的奖励的!

地板
webgu 发表于 2013-2-19 10:19:14
%sysfunc() 是在MACRO里调用DATA 步函数。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

7
playmore 发表于 2013-2-19 12:43:51
6皮皮9 发表于 2013-2-19 10:12
哇!!非常感谢!在另一个帖子里面我写了这个问题要处理多变量的问题。
如果我要处理X1到X100这100个变量 ...
这种上百个变量的,命名规则且在data步中,可以像你用的x1-x100这样标记,但只能用在特定的情形
其他情形下,只能用宏变量加循环了,比如

%macro ab();
data xxx;
set xxx;
%if i=1 to 100;
if x&i ge x&i._Median then x&i.=1;
else x&i.=0;
%end;
run;

%mend;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
6皮皮9 + 5 + 5 + 5 非常感谢您的指导!

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

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

8
complicated 在职认证  发表于 2013-2-19 13:45:34
收藏学习!
密码被盗??

9
xxxuuulll 发表于 2013-2-19 14:13:30
顶一下

10
6皮皮9 发表于 2013-2-19 14:43:06
playmore 发表于 2013-2-19 10:04
中间注释掉的是我开始想用SQL做的程序,后来发现SQL的Median函数不能用于单独的变量,后来改用另外的办法。 ...
在这个步骤中,我有一点疑问:在载入了HAVE这个数据集后,第一行_n_=1的时候载入Fmedian这个数据集的内容,可是最后的文件里面的第一行不是却不是Fmedian文件的数据。这个用法不是很明白,可否讲解一下?

data want(drop=x_Median y_Median z_Median);
   set have;
   if _n_=1 then set Fmedian(drop=_TYPE_ _FREQ_);

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

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