楼主: 子墨13
4201 5

[问答] 缺失值填充 [推广有奖]

  • 3关注
  • 5粉丝

讲师

54%

还不是VIP/贵宾

-

威望
0
论坛币
224 个
通用积分
3.0000
学术水平
6 点
热心指数
12 点
信用等级
5 点
经验
5058 点
帖子
426
精华
0
在线时间
352 小时
注册时间
2010-7-25
最后登录
2022-2-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位前辈,我有如下数据:
codepricedatependsanndatsn

4

104

16

4

103

15

4

102

1

102

14

2

107

13

2

106

2

106

12

2

105

11

2

104

10

2

103

1

103

9

2

102

8

2

101

7

1

107

6

1

105

5

1

104

2

104

4

1

103

3

1

102

1

102

2

1

101

1

我希望将anndats列的缺失值向下填充,就是针对同一个code,将前面一个有值的anndats填充到下面的缺失值中,直至遇到新的anndats为止(仅限同一code,顺序已用descending n排好),于是我写了如下程序:
/******************************/
data b;
set a;
if code=lag(code) and pends=. then anndats=lag(anndats);
run;

/******************************/
(剩下没能填充的不用管,因为我打算根据升序n反方向填充,但程序无实质差异。)

现在我的问题是:
1、为什么我的程序跑了数据完全没有任何变化?请问是哪里出错?
2、对于数据量特别特别特别大的时候,这个算不算相对“简单”的方法?是否有利于节约时间和硬盘空间?
谢谢!
我知道填充缺失值的方法肯定很多,欢迎大家都告诉我,但同时我更想知道这次错在哪里,谢谢!


二维码

扫码加我 拉你入群

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

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

关键词:缺失值 ending priced Price code 程序

沙发
子墨13 在职认证  发表于 2013-5-18 15:22:34 |只看作者 |坛友微信交流群
自己顶上去!!!!

使用道具

藤椅
子墨13 在职认证  发表于 2013-5-18 15:59:38 |只看作者 |坛友微信交流群
追加:经尝试,判断语句没错,关键是赋值语句(anndats=lag(anndats))不能生效。。。

使用道具

板凳
子墨13 在职认证  发表于 2013-5-18 17:14:52 |只看作者 |坛友微信交流群
子墨13 发表于 2013-5-18 15:59
追加:经尝试,判断语句没错,关键是赋值语句(anndats=lag(anndats))不能生效。。。
经过多番尝试,个人认为,错误原因:SAS对数据的存储不是动态的而是静态的,也就是说一次读入数据,lag()就已经定了,不会因为上一个值有所变化而变化。
不知是否真如此,欢迎指教。

使用道具

报纸
boe 发表于 2013-5-18 19:37:38 |只看作者 |坛友微信交流群
l_code=lag(code);
  l_anndats=lag(anndats);
  if anndats=. and code=l_code then anndats=l_anndats;
Gorgeous girl , I love !

使用道具

地板
可~乐 发表于 2013-5-29 16:33:38 |只看作者 |坛友微信交流群
像code的第一行为空的怎么填?还是不填?就像code=4的第一第二行,这里是否要填?填的话,填什么。。。。

使用道具

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

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

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

GMT+8, 2024-4-30 16:06