全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6395 25
2015-01-20
我有a b c d 五个变量,其中d有缺失值,各记录中当 a b c 这三个变量相同时,就把它们当成同一个观测,我想用d不缺失的值替换d的缺失值,该怎么办啊?
比如啊,数据集test,
a  b  c  d
1  1  1  A
1  1  1  .
1  1  1  .
1  2  1  .
1  2  1  B
2  2  2  .
2  2  2  C
2  2  1  D
...

我写的代码是:
proc sort data=test;by descending a descending b descending c descending d;run;               
data test;set test;
do i=1 to 50;
temp=lag(d);                                                                                
if a=lag(a) & b=lag(b) & c=lag(c) & d='' then d=temp;
end;
run;      


原数据集很大,根据这个代码自己试了,发现有的还是填不上。请指教!多谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2015-1-20 20:52:27
复制代码

二维码

扫码加我 拉你入群

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

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

2015-1-20 22:01:32
sushe1527 发表于 2015-1-20 20:52
确实比我的好用,但下一步,我想得到a b c 都唯一的一条记录,用下面的代码查重:

proc sort data=test NODUPKEY out=test11 dupout=test12;by a b c;run;

然后每一条唯一的记录给一个编号:

data test11;set test11;drop n;run;data test11;set test11;n=_n_;run;   

然后把这个唯一的编号再还给原来test 数据集中有变量d 的记录(数据集test1)(也就是data test1;set test;if d ne '';run;),为什么配上的编号总是少几个呢?
二维码

扫码加我 拉你入群

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

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

2015-1-20 22:04:47
sushe1527 发表于 2015-1-20 20:52
其实本质上,我是想根据变量d 查重,但是d 有缺失值,不得已同时选用 a b c 三个变量,在变量 d 缺失的情况下,用a b c 查重。然后重复的记录根据时间先后顺序改造成时间序列数据或重复测量数据。

拜谢!
二维码

扫码加我 拉你入群

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

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

2015-1-20 22:15:25
复制代码

二维码

扫码加我 拉你入群

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

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

2015-1-21 08:03:45
sushe1527 发表于 2015-1-20 22:15
有点不对劲,当d 缺失时,我需要同时用 a b c 三个变量查重,可是最后出来的编号结果是,当 d 缺失时,所有的 id 都是相同的编号,找不出来一样的观测了。。。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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