全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9982 6
2011-05-31
现在有个数据集,数据缺的不是很严重。我想用前一观测和后一观测的均值来补全缺失值,请问程序如何实现?因为提取前一观测很容易,可以用lag。但是提取后一观测不知道用什么函数。难道只能排两次序,用lag得出相邻记录,再求平均?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-5-31 11:43:18
你可以先transpose了,将变量变得有序,然后再用循环语句进行判断
二维码

扫码加我 拉你入群

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

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

2011-5-31 11:46:52
1# 马甲2号
data a;
input a;
datalines;
.
1
2
5
6
.
8
9
.
;
run;
proc transpose data=a out=b;
run;
data c;
set b;
array h(9) col1-col9;
do y=1 to dim(h);
x=y-
1; z=y+1;
if missing(h(y)) and y=1 then h(y)=h(z)/2; else
if missing(h(y)) and y=dim(h) then h(y)=h(x)/2; else
if missing(h(y)) then h(y)=(h(x)+h(z))/2;
end;
drop x y z ;
run;
proc transpose data=c out=d (drop=_name_);
run;
二维码

扫码加我 拉你入群

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

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

2011-5-31 11:55:07
用 proc expand
例如
proc expand data = a out=b;
  convert x = x_lag1 /transformout = (lag 1);
  convert x = x_lead1 /transformout = (lead 1);
run;
如果你有group变量,你可以用 by group,这样lag,lead可以对每一个group里面转换
二维码

扫码加我 拉你入群

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

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

2011-5-31 12:26:26
多个连续的缺失怎么补?
第一个或者最后一个缺失怎么补?
二维码

扫码加我 拉你入群

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

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

2014-8-10 22:28:58
可以用stdize过程步,下面这个程序用中值补缺proc stdize data=a reponly method=median;
   var x;
   run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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