楼主: 84562
1600 9

[原创博文] 求有条件移除数据的方法 感激不尽!!!!!! [推广有奖]

  • 0关注
  • 0粉丝

已卖:32份资源

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
29 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1303 点
帖子
44
精华
0
在线时间
94 小时
注册时间
2011-1-16
最后登录
2021-5-23

楼主
84562 发表于 2012-7-13 15:21:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
no        state         value
52        0              11
52        1              56
52        2              25
53        2              15
53        0              17
54        0              12
55        1              25
55        0              17

条件如下,每当state出现1的话,那个no就只保留1那行。
state没有1的话,就只保留2那行。
1,2都没有的话,就直接取0那行。


結果
no        state          value
52        1                 56
53        2                 15
54        0                 12
55        1                 25
二维码

扫码加我 拉你入群

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

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

关键词:感激不尽 State value alue ATE

回帖推荐

YueweiLiu 发表于5楼  查看完整内容

供楼主参考。

本帖被以下文库推荐

沙发
chendonghui1987 发表于 2012-7-13 15:52:36
state 只会出现0,1,2会不会出现0,1,1,2这种情况

藤椅
chendonghui1987 发表于 2012-7-13 15:55:18
同一个no下0,1,2有且只能出现一次

板凳
84562 发表于 2012-7-13 16:02:56
chendonghui1987 发表于 2012-7-13 15:52
state 只会出现0,1,2会不会出现0,1,1,2这种情况
不会,对于每个no,每个state只会出现一次,不会有2个1。
所以state只會出現
0,1,2
0,2
0,1
1,2
0
1
2
这7种情况

报纸
YueweiLiu 发表于 2012-7-13 17:25:32
  1. proc transpose data=have out=tmp(drop=_name_) prefix=state_;
  2.         by no;
  3.         var value;
  4.         id state;
  5. run;
  6. data want;
  7.         set tmp;
  8.         array statetmp[*] state_1 state_2 state_0;
  9.         do i=1 to dim(statetmp);
  10.                 if statetmp[i]^=. then do;
  11.                         state=input(substr(vname(statetmp[i]),7),best.);
  12.                         value=statetmp[i];
  13.                         output;
  14.                         return;
  15.                 end;
  16.         end;
  17.         drop state_: i;
  18. run;
复制代码
供楼主参考。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
YueweiLiu 发表于 2012-7-13 17:29:48
  1. data tmp;
  2.         set have;
  3.         if state=1 then flag=1;
  4.         else if state=2 then flag=2;
  5.         else if state=0 then flag=3;
  6. run;
  7. proc sort data=tmp;
  8.         by no flag;
  9. run;
  10. data want;
  11.         set tmp;
  12.         by no;
  13.         if first.no;
  14.         drop flag;
  15. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员

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

7
YueweiLiu 发表于 2012-7-13 17:52:10
  1. data want;
  2.         flag=0;
  3.         do until (last.no);
  4.                 set have;
  5.                 by no;
  6.                 if flag=0 and state>0 then flag=state;
  7.                 if flag>0 and state=1 then flag=1;

  8.         end;
  9.         do until (last.no);
  10.                 set have;
  11.                 by no;
  12.                 if state=flag then output;
  13.         end;
  14.         drop flag;
  15. run;
复制代码

8
pobel 在职认证  发表于 2012-7-13 22:20:39
data test;
input no        state         value;
cards;
52        0              11
52        1              56
52        2              25
53        2              15
53        0              17
54        0              12
55        1              25
55        0              17
;

proc sql;
   create table wanted(drop=odr) as
    select distinct no,state, value, sum(1*(state=1),2*(state=2),3*(state=0)) as odr
          from test
          group by no
          having odr=min(odr);
quit;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员
YueweiLiu + 1 + 1 精彩帖子

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

和谐拯救危机

9
84562 发表于 2012-7-14 10:18:09
pobel 发表于 2012-7-13 22:20
data test;
input no        state         value;
cards;
THX very much!

10
84562 发表于 2012-7-14 10:19:13
YueweiLiu 发表于 2012-7-13 17:29
3个方法,尽是感激

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 03:06