楼主: 小沐君
683 1

[问答] 如何这样保留上一行的值? [推广有奖]

  • 6关注
  • 3粉丝

已卖:236份资源

博士生

5%

还不是VIP/贵宾

-

威望
0
论坛币
499 个
通用积分
30.3865
学术水平
8 点
热心指数
18 点
信用等级
8 点
经验
44321 点
帖子
191
精华
0
在线时间
192 小时
注册时间
2016-1-10
最后登录
2023-11-26

楼主
小沐君 发表于 2022-11-7 19:55:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大神们,求救,

前四行是现有数据,现在想做出最后的那列 want,也就是 当wchg 小于等于10 时,保留第一行的vsstresn 的值,当wchg大于10时,保留本行的vsstresn,

usubjid

ecstdtc

vsstresn

wchg

want

101-001

11/1/2022

90

0

90

101-001

11/2/2022

91

1.1

90

101-001

11/3/2022

92

1.1

90

101-001

11/4/2022

93

1.1

90

101-001

11/5/2022

120

29

120

101-001

11/6/2022

121

0.83

120

101-001

11/7/2022

122

0.83

120

101-001

11/8/2022

140

14.8

140

101-001

11/9/2022

141

0.7

140



如何能做出 want 那列的值,

用retain 语句 没想明白,求指点!!

dummy 的code 如下:

  1. data a;
  2.         usubjid='101-001';
  3.         ecstdtc='2022-11-01';vsstresn=90; wchg=0; output;
  4.         ecstdtc='2022-11-02';vsstresn=91; wchg=1.1; output;
  5.         ecstdtc='2022-11-03';vsstresn=92; wchg=1.1; output;
  6.         ecstdtc='2022-11-04';vsstresn=93; wchg=1.1; output;
  7.         ecstdtc='2022-11-05';vsstresn=120; wchg=29; output;
  8.         ecstdtc='2022-11-06';vsstresn=121; wchg=0.83; output;
  9.         ecstdtc='2022-11-07';vsstresn=122; wchg=0.83; output;
  10.         ecstdtc='2022-11-08';vsstresn=140; wchg=14.8; output;
  11.         ecstdtc='2022-11-09';vsstresn=141; wchg=0.7; output;
  12. run;
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:output RETAIN outpu Dummy Stre

沙发
绣球 发表于 2022-11-9 16:51:38
增加几个辅助列x,y,cnt

data a;
set a;
if wchg<=10 then x=0;
else x=1;
run;

data a;
set a;
by usubjid ;
y=lag(x);
if first.usubjid then cnt=0;
if x=y then do;
   retain cnt;
end;
else cnt+1;
run;

data a;
set a;
format want best12.;
by usubjid cnt;
if first.cnt then want=vsstresn;
retain want;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-17 16:47