楼主: marakesh
498 3

[问答] 关于一个观测缺失时,如何用下一个不缺失的值进行替换 [推广有奖]

  • 1关注
  • 0粉丝

VIP1+

本科生

61%

(VIP/贵宾)六级

26%

威望
0
论坛币
912 个
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
282 点
帖子
22
精华
0
在线时间
171 小时
注册时间
2017-12-20
最后登录
2018-9-20

marakesh 发表于 2018-4-16 16:38:01 |显示全部楼层
10论坛币
在编程时遇到了如下问题
我的数据中有一部分值是缺失的。
比如col1 obs5是缺失的,这个情况下我想用col1的obs6来替换,让obs5的观测值等于obs6.
请问该如何操作?
谢谢!
stata SPSS
lovexialulu 发表于 2018-4-16 16:38:02 |显示全部楼层
  1. data a;
  2. input col1 @;
  3. cards;
  4. 1 . 3 . 4 . 7 . . 0
  5. ;
  6. run;

  7. %macro jj(ind,out);
  8. data _null_;
  9. set &ind end=eof;
  10. call symputx(cats('var',_n_),col1);
  11. if eof then symputx(tot,_n_);
  12. run;

  13. data &out.;
  14. set &ind ;
  15. %do i=1 %to %eval(&tot. -1);
  16.   %let j=%eval(&i+1);
  17. if _n_=&i and col1 eq . then col1=&&var&j.;
  18. %end;
  19. run;

  20. data check;
  21. set &out.;
  22. if col1=. then do; put "war" "ning: Pls continue using macro jj " col= ;output;end;
  23. run;

  24. %mend jj;
  25. %jj(a,b);
  26. %jj(b,c);
复制代码
回复

使用道具 举报

Tigflanker 发表于 2018-4-17 14:02:14 |显示全部楼层
本帖最后由 Tigflanker 于 2018-4-17 14:21 编辑

单缺:
  1. data have;
  2.   do _n_ = 1 to 10;
  3.     i = ifn(_n_ = 5,.,_n_);
  4.     output;
  5.   end;
  6. run;

  7. data want;
  8.   set have end = last;
  9.   position = _n_ + 1;
  10.   if ~ last then set have(keep = i rename = i=ix) point = position ;
  11.   i = ifn(missing(i),ix,i);
  12. run;
复制代码
连缺:
  1. data have;
  2.   do _n_ = 1 to 10;
  3.     i = ifn(_n_ in (5, 6),.,_n_);
  4.     output;
  5.   end;
  6. run;

  7. data x(keep = obs i);
  8.   set have;

  9.   obs = _n_;
  10. run;

  11. data want;
  12.   set have end = last;

  13.   if _n_ = 1 then do;
  14.     dcl hash h(dataset:'x');
  15.         h.definekey('obs');
  16.         h.definedata('i');
  17.         h.definedone();
  18.   end;

  19.   do while(~last and missing(i));
  20.     obs = max(_n_, obs) + 1;
  21.         h.find();
  22.   end;
  23. run;
复制代码
回复

使用道具 举报

marakesh 发表于 2018-4-24 12:53:17 |显示全部楼层
Tigflanker 发表于 2018-4-17 14:02
单缺:连缺:
非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2018-9-21 11:03