楼主: yellowbill
2430 1

[实际应用] 如何用sas补全缺失值 [推广有奖]

  • 0关注
  • 0粉丝

本科生

92%

还不是VIP/贵宾

-

威望
0
论坛币
182 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
1381 点
帖子
14
精华
0
在线时间
219 小时
注册时间
2017-10-31
最后登录
2023-2-16

50论坛币
stkcdcdvalue
001

1

20

001

2

56

001

5

86

002

1

94

002

2

25

002

3

39

002

5

5

003

2

25

003

5

86

把以上数据变为
stkcdcdvalue
001

1

20

001

2

56

001

3

56

001

4

56

001

5

86

002

1

94

002

2

25

002

3

39

002

4

39

002

5

5

003

2

25

003

3

25

003

4

25

003

5

86

红色为添加部分,如何修改。

最佳答案

lyfyb99 查看完整内容

data aa; input stkcd cd value; cards; 1 1 20 1 2 56 1 5 86 2 1 94 2 2 25 2 3 39 2 5 5 3 2 25 3 5 86 ; run; proc sort data=aa; by stkcd cd; run; data bb; set aa; by stkcd cd; if first.stkcd ; do while (cd
关键词:缺失值 如何用 stkcd value alue
沙发
lyfyb99 在职认证  发表于 2019-1-18 23:53:51 |只看作者 |坛友微信交流群

data aa;
input stkcd        cd        value;
cards;
1        1        20
1        2        56
1        5        86
2        1        94
2        2        25
2        3        39
2        5        5
3        2        25
3        5        86
;
run;

proc sort data=aa;
by stkcd cd;
run;

data bb;
set aa;
by stkcd cd;
if first.stkcd ;
do while (cd<=5);
output;
cd=cd+1;
end;
keep stkcd cd;
run;

proc sql;
create table cc as
select a.*, b.value
from bb as a left join aa as b
on a.stkcd=b.stkcd and a.cd=b.cd
order by a.stkcd, a.cd;
quit;

data dd;
set cc;
by stkcd cd;
retain _value;
if value ne . then _value=value;
if value=. then value=_value;
drop _value;
run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 12:16