everns
我想通过程序一次将数据集中的缺失值赋值为0,最好不要调用每一个变量,因为有100多个,调用起来很麻烦
ynot
data b;
set a;
array ccccc _character_ ;
do over ccccc;
if ccccc='' then ccccc='0';
end;
array nnnnn _numeric_;
do over nnnnn;
if nnnnn=. then nnnnn=0;
end;
run;
longoR
it seems that this is just a one-liner in R.
hexm26
[quote]引用第2楼longoR++于2007-07-27 03:03发表的“”:
it seems that this is just a one-liner in R.[/quote]
Really? Show it to us.
longoR
wouldn't be something like
dat[is.na(dat)]=0
working?
hexm26
[quote]引用第4楼longoR++于2007-07-27 05:46发表的“”:
wouldn't be something like
dat[is.na(dat)]=0
working?[/quote]
I don't know, but it is cool!!!!
yihui
longoR++说的没错。呵呵,R的下标(index)系统和赋值方法就是好用啊!既可以用数字(行列)作下标,又可以用逻辑值(T/F)作下标,对我们编程来说可以省去显式的循环。
rtist
[quote]引用第6楼谢益辉于2007-07-27 00:32发表的“”:
longoR++说的没错。呵呵,R的下标(index)系统和赋值方法就是好用啊!既可以用数字(行列)作下标,又可以用逻辑值(T/F)作下标,对我们编程来说可以省去显式的循环。[/quote]
还可以用列名做下标,我一般当列太多的时候,数不清12345,就会用名字。
everns
非常感谢ynot !也感谢大家!
amitywei
%macro chgmiss(dataset=,with=);
data &dataset(drop=i);
set &dataset;
array name(*) _NUMERIC_;
do i=1 to dim(name);
if name(i)=. then name(i)=&with;
end;
run;
%mend chgmiss;
%chgmiss(dataset=你的数据集名称,with=0);
rtist
[quote]引用第9楼amitywei于2007-07-29 20:38发表的“”:
if abs(name(i))=. then name(i)=&with;
.......[/quote]
为什么要用个abs呢?
amitywei
谢谢提醒。因为我原来的应用需要求绝对值,拷上来的时候修改了别的地方忘了改这儿了。abs()函数确实是不需要的。
[quote]引用第10楼rtist于2007-07-30 16:48发表的“”:
为什么要用个abs呢?[/quote]
allen802
想请教二楼详讲下
array ccccc _character_ ;
do over ccccc;
两句
看不大懂,谢谢!
hexm26
我其实更喜欢ynot的code一些,因为他考虑到数据分numeric和character的不同,虽然楼主并不需要换character变量;当然amitywei用宏命令更显professional。
hexm26
[quote]引用第12楼allen802于2007-07-30 20:12发表的“”:
想请教二楼详讲下
array ccccc _character_ ;
do over ccccc;
两句
看不大懂,谢谢![/quote]
自己查help文件,或是google,你可以学得更好一些。