全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4520 5
2013-05-18
各位前辈,我有如下数据:
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、对于数据量特别特别特别大的时候,这个算不算相对“简单”的方法?是否有利于节约时间和硬盘空间?
谢谢!
我知道填充缺失值的方法肯定很多,欢迎大家都告诉我,但同时我更想知道这次错在哪里,谢谢!


二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-18 15:22:34
自己顶上去!!!!
二维码

扫码加我 拉你入群

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

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

2013-5-18 15:59:38
追加:经尝试,判断语句没错,关键是赋值语句(anndats=lag(anndats))不能生效。。。
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

2013-5-18 19:37:38
l_code=lag(code);
  l_anndats=lag(anndats);
  if anndats=. and code=l_code then anndats=l_anndats;
二维码

扫码加我 拉你入群

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

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

2013-5-29 16:33:38
像code的第一行为空的怎么填?还是不填?就像code=4的第一第二行,这里是否要填?填的话,填什么。。。。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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