全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1277 8
2016-10-12
图中的dataset,如何写SAS code,如果值missing,取左边的值,比如column -59,第二个值取0,再比如column -58,第五个值取0.7. Column -60, 均为0 image0.jpg
二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-12 10:41:22
data out; set in;
col60 = coalesce(col60,0);
col59 = coalesce(col59,col60);
col58 = coalesce(col58,col59);
/*依次类推。如果变量过多可考虑数组或者宏实现*/
run;
二维码

扫码加我 拉你入群

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

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

2016-10-12 10:51:45
prince315 发表于 2016-10-12 10:41
data out; set in;
col60 = coalesce(col60,0);
col59 = coalesce(col59,col60);
宏是用do loop吗?求大神帮忙写一下可以吗?col 从-60到60, 是用%do i = -60 %to 60吗?谢谢了
二维码

扫码加我 拉你入群

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

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

2016-10-12 10:57:07
%macro loop()
%local i;
%do i = -59 %to 60;
"&i."n = coalesce("&i."n,"%eval(&i.-1)"n);
%end;
%mend;


data out; set in;
"-60"n = coalesce("-60"n,0);  /*这里假定变量名就为 “-60”n - "60"n*/
%loop;
run;
二维码

扫码加我 拉你入群

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

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

2016-10-12 11:07:44
prince315 发表于 2016-10-12 10:57
%macro loop()
%local i;
%do i = -59 %to 60;
谢谢谢谢!!!!
二维码

扫码加我 拉你入群

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

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

2016-10-13 00:09:42
prince315 发表于 2016-10-12 10:57
%macro loop()
%local i;
%do i = -59 %to 60;
我试了code, 但是run完只是在dataset里新建了一个-60的column,里面的值和原先-60那个column里的值一样,该缺的还是缺,是因为-60这个varaible名不对吗?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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