SAS中文论坛

标题: 请教:如何把等级数据转换成01数据? [打印本页]

作者: shiyiming    时间: 2007-10-7 15:03
标题: 请教:如何把等级数据转换成01数据?
我想把等级数据,按照平均分的大小,把它转换成01数据,而且变量较多,应该怎么做呢?
请大侠指教!!!
多谢!
数据举例:
v1- v19
5332313432423423423
4545324342334532435
3412131341353411342

按照v1-v19的平均值,高于平均值赋值1,低于平均值赋值0.

如何转制?
多谢!!!
作者: shiyiming    时间: 2007-10-7 20:59
标题: Re: 请教:如何把等级数据转换成01数据?
data a;
input (v1-v19)(1.);
average=mean(of v1-v19);
cards;
5332313432423423423
4545324342334532435
3412131341353411342
;
run;
data b;
set a ;
drop i average;
array v(19) v1-v19;
do i=1 to 19;
if v(i)>average then v(i)=1;
else v(i)=0;
end;
run;
作者: shiyiming    时间: 2007-10-8 15:19
标题: Re: 请教:如何把等级数据转换成01数据?
多谢大侠!!!
无尽感激!!!
作者: shiyiming    时间: 2007-10-8 19:28
标题: Re: 请教:如何把等级数据转换成01数据?
不过,我运行了数据,结果发现此程序计算的是[b:7339a]每一观测的平均分[/b:7339a]哦。。。

那么若对[b:7339a]变量的平均分[/b:7339a]进行计算,再根据变量的平均分而进行01转换,又将如何呢?

多谢!!
作者: shiyiming    时间: 2007-10-9 11:42
标题: Re: 请教:如何把等级数据转换成01数据?
呵呵,那就先把数据转置了,再做以上的工作,看需要再转过来
作者: shiyiming    时间: 2007-10-9 17:10
标题: Re: 请教:如何把等级数据转换成01数据?
不愧是很有经验的人!一语道破!
我用excel转置,不过由于样本量较大,所以转置的时候超过excel所能容纳的列数,所以转置的时候还要分2步走,真的很麻烦!
不知道那位高手能否提供sas的转置程序?

多谢!!
作者: shiyiming    时间: 2007-10-11 09:06
标题: Re: 请教:如何把等级数据转换成01数据?
data a;
infile '   ';
input v1-v62;
array v(62)v1-v62;
array v_a(62) v_a1-v_a62;
do i=1 to 62;
v_a(i)+v(i);
end;
run;
DATA b;
keep v1-v62;
array v_b(62)v_b1-v_b62;
array v_a(62) v_a1-v_a62;
array v_c(62) v_c1-v_c62;
array v(62)v1-v62;
retain v_b(62)v_b1-v_b62;
retain v_c(62) v_c1-v_c62;
   _N_ ++ (N-1);
   IF _N_ <= N THEN DO;
      SET A POINT=_N_;
          do i=1 to 62;
      v_b(i) =v_a(i) ;
          v_c(i)=v_b(i)/N;
        end;
   END;
   SET A NOBS=N;
do i =1 to 62;
if v(i)>=v_c(i) then v(i)=1;
else if v(i)<v_c(i) then v(i)=0;
end;
RUN;
作者: shiyiming    时间: 2007-10-11 11:17
标题: Re: 请教:如何把等级数据转换成01数据?
多谢大侠!!
好复杂~~
目前我的水平还不是很懂~~

是否可以这样:
proc transpose;
run;
进行转置,
在进行计算;
然后再转置回来?




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2