全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1576 1
2016-01-26
悬赏 5 个论坛币 已解决
有下面这个表格,id=1和id=2各有5组数据
Obs

ID

Repetition

species

Treatment

Week

Activity

censor

lower

upper

1

1

a

alba

1

14

0

0

14

14

2

1

a

alba

1

21

2

0

21

21

3

1

a

alba

1

28

3

0

28

28

4

1

a

alba

1

35

.

1

.

.

5

1

a

alba

1

42

.

1

.

.

6

2

b

alba

1

14

0

0

14

14

7

2

b

alba

1

21

2

0

21

21

8

2

b

alba

1

28

3

0

28

28

9

2

b

alba

1

35

.

1

.

.

10

2

b

alba

1

42

.

1

.

.

想要得到下面这样的数据,也就是当id=1时,activity第一次为.时,它的lower为上一行的week,它的upper为现在这一行的week
同理id=2。(因为是在week=35时,activity为.  , 所以下面的结果里lower为28(上一周week是28),upper为35(这一周week是35)
Obs

ID

Repetition

species

Treatment

Week

Activity

censor

lower

upper

4

1

a

alba

1

35

.

1

28

35

9

2

b

alba

1

35

.

1

28

35


最佳答案

xiuzhenning 查看完整内容

就当前这个数据顺序来写的话,简单如下: data ds_new; set ds_old; lag_week = lag(week); if missing(activity) then do; lower = lag_week; upper = week; output; end; proc sort nodupkey ; by id; run; 如果有第一条的activity为缺省值的话,要另外再做处理
二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-26 14:04:20
就当前这个数据顺序来写的话,简单如下:
data ds_new;
  set ds_old;
  lag_week = lag(week);
  if missing(activity) then do;
    lower = lag_week;
    upper = week;
    output;
  end;
  proc sort nodupkey ; by id;
run;
如果有第一条的activity为缺省值的话,要另外再做处理
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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