楼主: lizhewenbei
1328 2

请教大家,怎么使用公共变量来代替程序中反复出现的同一个数字? [推广有奖]

  • 15关注
  • 5粉丝

已卖:668份资源

副教授

38%

还不是VIP/贵宾

-

威望
0
论坛币
304 个
通用积分
11.3270
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9728 点
帖子
614
精华
0
在线时间
502 小时
注册时间
2008-2-6
最后登录
2025-11-27

楼主
lizhewenbei 学生认证  发表于 2014-11-19 19:33:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在winsorize的时候,经常反复用到同一个数字,比如下例中的10,请问能否使用macro等,在前面加一个公共变量?

如果我要添加变量,或者减少变量,就不需要手工把每一个数字都变成“10”。

/*winsorize*/
data b1;set a1; d=1;run;
proc means noprint;
  var x1-x10 ;by d;
output out=b2(drop=_freq_  _type_) p10=x1-x10 p90=b1-b10;
data f1;
  merge b2 b1; by d;
  array z{1:10} x1-x10;

  array x{1:10} a1-a10;
  array b{1:10} b1-b10;
  do i=1 to 10;
   if z[i]<a[i] and z[i]~=. then z[i]=a[i] /*delete*/;
   if z[i]>b[i] then z[i]=b[i]/*delete*/;
   end;drop i d a1-a10 b1-b10;
run;

二维码

扫码加我 拉你入群

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

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

关键词:Winsorize winsor delete output array 程序

沙发
mingfeng07 学生认证  发表于 2014-11-19 19:36:39
%let k=10;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 2 + 1 + 1 + 1 精彩帖子

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

藤椅
lizhewenbei 学生认证  发表于 2014-11-20 14:49:42
mingfeng07 发表于 2014-11-19 19:36
%let k=10;
感谢mingfeng老师!真赞

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

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