全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
12257 6
2013-02-19
悬赏 20 个论坛币 已解决
各位好,向大家求助一个问题。
我有100个变量,1000个样本。
我要求每个变量的中位数,然后每个样本的每个变量的值若大于等于该变量的中位数则该变量的值设定为1,否则为0.
例如:
原始数据如下
       X1 X2 X3
ID1   1  2  3
ID2   2  4  4
ID3   3  3  5
计算X1 X2 X3的中位数分别是 2 3 4
转换后的数值是
       X1 X2 X3
ID1   0  0  0
ID2   1  1  1
ID3   1  1  1


怎么样样用宏来实现这个过程?
我用MEANS算出个变量的中位数,并保存下来了,但是不知道如何引用这些数值。是不是用宏函数%sysfunc(median(X1))可以解决这个问题?
请各位大侠指点!

proc means data=test median;
var x1-x100;
output out=fmedian
median=
/autoname;
run;

最佳答案

bjtoronto 查看完整内容

请参考如下程序,希望可以有帮助。如果有100个variables, 可以修改相应参数。 data test1; input x1-x3; datalines; 1 2 3 2 4 4 3 3 5 ; run; proc means data=test1; var x1-x3; output out=fmedian median(x1-x3)=xm1-xm3; run; data test2; if _n_=1 then set fmedian; set test1; array xvalue{3} x1-x3; array mvalue{3} xm1-xm3; array tvalue{3} t1-t3; do i=1 to 3; if xvalue{i} >= mvalu ...
二维码

扫码加我 拉你入群

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

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

全部回复
2013-2-19 09:49:28
请参考如下程序,希望可以有帮助。如果有100个variables, 可以修改相应参数。
data test1;
input x1-x3;
datalines;
1 2 3
2 4 4
3 3 5
;
run;

proc means data=test1;
var x1-x3;
output out=fmedian
median(x1-x3)=xm1-xm3;
run;

data test2;
if _n_=1 then set fmedian;
set test1;
array xvalue{3} x1-x3;
array mvalue{3} xm1-xm3;
array tvalue{3} t1-t3;

do i=1 to 3;
   if xvalue{i} >= mvalue{i} then tvalue{i}=1;
   else tvalue{i}=0;        
end;
keep t1-t3;
run;
二维码

扫码加我 拉你入群

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

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

2013-2-19 10:06:35
帮顶
二维码

扫码加我 拉你入群

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

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

2013-2-19 10:12:33
jinxi118 发表于 2013-2-19 10:06
帮顶
THX~~~
二维码

扫码加我 拉你入群

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

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

2013-2-19 13:20:36
data orignial;
input x1 x2 x3;
datalines
1 2 3
2 4 4
3 3 5
;
run;

proc means data=test median;
var x1-x3;
output out=fmedian
median=
/autoname;
run;

data final (keep= x1 x2 x3);
set original;
if _n_=1 then set fmedian;
x1=(x1>x1_Median);
x2=(x2>x2_Median);
x3=(x3>x3_Median);
run;

或者把Median的值存在Macro variable里就可以引用。
二维码

扫码加我 拉你入群

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

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

2013-8-11 08:40:17
erzi_yhj 发表于 2013-2-19 13:20
data orignial;
input x1 x2 x3;
datalines
受用
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群