楼主: pigchenjh
1158 6

怎样删选一条记录 [推广有奖]

  • 0关注
  • 1粉丝

大专生

3%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0.0086
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
268 点
帖子
23
精华
0
在线时间
43 小时
注册时间
2013-12-24
最后登录
2017-3-23

楼主
pigchenjh 发表于 2014-3-27 17:18:20 |AI写论文
20论坛币
比如一张表
subject           times          dose
1011               1                     3
1011                2                     5
1011                3                       3
1011                4                      5
1011                5                      5
1011                6                       5


如何删选最先达到稳定的dose那条记录      即 选出  1011                4                      5   这条记录

最佳答案

wwang111 查看完整内容

是这个意思? data a; input subject times dose; cards; 1011 1 3 1011 2 5 1011 3 3 1011 4 5 1011 5 5 1011 6 5 ; data b; set a; lagdos=lag(dose); if subject ne lag(subject) then call missing(lagdos); if dose=lagdos then delete;drop lagdos; run; proc sql; create table wanted as select * from b group by subject having times=max(times); quit;
关键词:Subject Times dose time DOS 记录

沙发
wwang111 发表于 2014-3-27 17:18:21
是这个意思?

data a;
input subject times dose;
cards;
1011 1  3
1011 2  5
1011 3  3
1011 4  5
1011 5  5
1011 6  5
;

data b;
set a;
lagdos=lag(dose);
if subject ne lag(subject) then call missing(lagdos);
if dose=lagdos then delete;drop lagdos;
run;
proc sql;
create table wanted as
select * from b
group by subject
having times=max(times);
quit;

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
pigchenjh + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

只有一个罗纳尔多

藤椅
learsaas 发表于 2014-3-27 19:27:14
很明显,data步就可以搞定了,无须写的这么复杂

板凳
pigchenjh 发表于 2014-3-27 19:28:25
wwang111 发表于 2014-3-27 17:26
是这个意思?

data a;
谢谢你  让我学到了新东西

报纸
farmman60 发表于 2014-3-28 10:21:56

data a;
input subject times dose;
cards;
1011 1  3
1011 2  5
1011 3  3
1011 4  5
1011 5  5
1011 6  5
;
run;

proc sql;
  select a.* from a,a b
  where a.subject=b.subject and b.times-a.times=1 and a.dose=b.dose=5;
  quit;

地板
pigchenjh 发表于 2014-3-28 14:05:42
wwang111 发表于 2014-3-27 17:18
是这个意思?

data a;
那如果表时这样的
subjet  times dose
1011   1        3
1011    2       4
1011    3       5
1011    4       6
1011    5        0
1011    6         6
1011    7          6
1011    8         0
删选稳态dose 且不为0 的记录 即选出 1011   6  6 这条记录  该怎么做啊?

7
wwang111 发表于 2014-3-28 14:56:25
把sql那一步改成

proc sql;
create table wanted as
select * from b
where dose ne 0
group by subject
having times=max(times);
quit;
只有一个罗纳尔多

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 15:44