l******r 发帖数: 682 | 1 一个数据,variable比较多,大概300个。
是不是只有先把variable名取出来存成macro数组,然后再用loop一个一个改?
谢谢 |
k*******a 发帖数: 772 | 2 可以用 SAS 的dictionary来找出data有什么variable
data test;
input var1 $ var2 $;
datalines;
3.4 5
4.55 5.3
4 3.444
;
run;
proc sql noprint;
select strip(name)||"_n=input("||strip(name)||",best12.)" into :convert
separated by ";"
from sashelp.vcolumn
where libname="WORK" and upcase(memname)="TEST";
quit;
data test1;
set test;
&convert;
run; |
p***e 发帖数: 118 | 3 天才,您真是天才
【在 k*******a 的大作中提到】 : 可以用 SAS 的dictionary来找出data有什么variable : data test; : input var1 $ var2 $; : datalines; : 3.4 5 : 4.55 5.3 : 4 3.444 : ; : run; : proc sql noprint;
|
L****n 发帖数: 3545 | 4 mark, super cow !
【在 k*******a 的大作中提到】 : 可以用 SAS 的dictionary来找出data有什么variable : data test; : input var1 $ var2 $; : datalines; : 3.4 5 : 4.55 5.3 : 4 3.444 : ; : run; : proc sql noprint;
|
S*x 发帖数: 705 | 5 aglee. niu code
【在 p***e 的大作中提到】 : 天才,您真是天才
|
a****g 发帖数: 8131 | 6 this is a nice code
【在 k*******a 的大作中提到】 : 可以用 SAS 的dictionary来找出data有什么variable : data test; : input var1 $ var2 $; : datalines; : 3.4 5 : 4.55 5.3 : 4 3.444 : ; : run; : proc sql noprint;
|
s*****9 发帖数: 285 | 7 &convert will resolve to
strip(name1)_n=input(strip(name1),best12.);
strip(name2)_n=input(strip(name2),best12.);
.....
strip(namen)_n=input(strip(namen),best12.);
?
what's in vcolumn?
name1;name2;....namen? |
t**s 发帖数: 156 | 8 如果知道有多少variable需要转换,也可以用下面的方法.
假定有100个variable
Data test1;
Set test;
Array allchar(*) _char_;
Array newvar(*) newvar1 - newvar100;
Do i=1 to dim(allchar);
newvar(i)=Input(allchar(i), best.);
End;
Run;
如果不知道, 先找出来
proc sql noprint;
select count(*) into:cnt from sashelp.vcolumn
where libname="WORK" and upcase(memname)="TEST" and upcase(type=)"CHAR";
quit;
Data test1;
Set test;
Array allchar(*) _char_;
Array newvar(*) newvar1 - newvar&cnt;
Do i=1 to dim(allchar);
newvar(i)=Input(allchar(i), best.);
End;
Run; |
d******9 发帖数: 404 | |
k*z 发帖数: 4704 | |
|
|
p********a 发帖数: 5352 | 11 现在同学们的SAS都很强啊。5年前的时候,难点的SAS问题常常就挂在那里。 |
s*******2 发帖数: 499 | 12 我常用的方法是,建一个array,包括所有char variable,然后一步就可以全改成
numeric了。
【在 l******r 的大作中提到】 : 一个数据,variable比较多,大概300个。 : 是不是只有先把variable名取出来存成macro数组,然后再用loop一个一个改? : 谢谢
|
k*******a 发帖数: 772 | 13 如果变量很多,名字不规则,那么array出来的numeric变量名很难和原先的对应起来
【在 s*******2 的大作中提到】 : 我常用的方法是,建一个array,包括所有char variable,然后一步就可以全改成 : numeric了。
|
p***r 发帖数: 920 | 14 i like more brutal one
transpose wide -> long
all variable char -> numeric
transpose long -> wide |
p**********o 发帖数: 21 | 15 我只知道用用proc contents,sashelp.vcolumn还不知道呢,学习了
另外,那几个"是什么意思啊?是转义吗?
【在 k*******a 的大作中提到】 : 可以用 SAS 的dictionary来找出data有什么variable : data test; : input var1 $ var2 $; : datalines; : 3.4 5 : 4.55 5.3 : 4 3.444 : ; : run; : proc sql noprint;
|
a********t 发帖数: 1810 | 16 只会在ENTERPRISE GUID, MINER里转,自动转,不需要写CODE |