楼主: Rock2000
1178 6

[有偿编程] 怎样删除不含某特征的所有记录? [推广有奖]

  • 1关注
  • 24粉丝

学术权威

22%

还不是VIP/贵宾

-

威望
1
论坛币
104812 个
通用积分
25.6012
学术水平
55 点
热心指数
74 点
信用等级
48 点
经验
23619 点
帖子
547
精华
0
在线时间
10774 小时
注册时间
2004-5-27
最后登录
2024-4-25

50论坛币
有一批数据,含姓名(name)及指示变量(mark),name变量含很多重名记录,mark含2类值,现在想保留mark=2的name的所有记录,怎样处理?
  1. name        mark
  2. 蔡结卿        1
  3. 蔡结卿        1
  4. 蔡结卿        1
  5. 蔡进卿        2
  6. 蔡进卿        1
  7. 蔡进卿        1
  8. 蔡理香        1
  9. 蔡理香        1
  10. 蔡丽英        2
  11. 蔡丽英        1
复制代码
最终得到的数据集是

  1. name        mark
  2. 蔡进卿        2
  3. 蔡进卿        1
  4. 蔡进卿        1
  5. 蔡丽英        2
  6. 蔡丽英        1
复制代码


最佳答案

Tigflanker 查看完整内容

是不是这个意思
关键词:Mark name Mar 数据集
沙发
Tigflanker 发表于 2018-4-18 10:45:32 |只看作者 |坛友微信交流群
  1. proc sql;
  2.   create table want as
  3.   select * from test
  4.   where name in (select name from test where mark = 2)
  5.   ;
  6. quit;
复制代码
是不是这个意思

使用道具

藤椅
Rock2000 发表于 2018-4-18 10:51:20 |只看作者 |坛友微信交流群
如果数据量少,本来我可以用很笨的方法处理
  1. data test;
  2. input  name $ mark;
  3. cards;
  4. 蔡结卿        1
  5. 蔡结卿        1
  6. 蔡结卿        1
  7. 蔡进卿        2
  8. 蔡进卿        1
  9. 蔡进卿        1
  10. 蔡理香        1
  11. 蔡理香        1
  12. 蔡丽英        2
  13. 蔡丽英        1
  14. ;
  15. run;

  16. data a; set test;
  17. if mark=2;
  18. run;

  19. /*从数据集a中导出保留的记录中的name,用于以下编程*/

  20. data b; set test;
  21. if name="蔡进卿" or name="蔡丽英";
  22. run;
  23. /*数据集B就是最终的数据集,但这是很少数据记录是可以用,量大就不可以了,太笨*/
复制代码


使用道具

板凳
l1i2n3i4n5g 在职认证  发表于 2018-4-18 11:28:59 |只看作者 |坛友微信交流群
  1. data test;
  2. input  name $ mark;
  3. cards;
  4. 蔡结卿        1
  5. 蔡结卿        1
  6. 蔡结卿        1
  7. 蔡进卿        2
  8. 蔡进卿        1
  9. 蔡进卿        1
  10. 蔡理香        1
  11. 蔡理香        1
  12. 蔡丽英        2
  13. 蔡丽英        1
  14. ;
  15. run;

  16. data want;
  17.    set test;
  18.    by name notsorted;
  19.    retain temp;
  20.    if first.name then temp=mark;
  21.    if temp=2;
  22.    drop temp;
  23. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Rock2000 + 5 + 5 + 1 精彩帖子

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

使用道具

报纸
paperaeroplane 发表于 2018-4-18 13:20:40 |只看作者 |坛友微信交流群

来尝试解决下,学习与交流

按照楼主的意思,如果单纯需要符合条件的observation,则可参考以下代码——

proc sql;
    create table work.want as
    selete name, mark
    from test
    where mark =2;
quit;

使用道具

地板
Rock2000 发表于 2018-4-18 18:12:43 |只看作者 |坛友微信交流群
Rock2000 发表于 2018-4-18 10:51
如果数据量少,本来我可以用很笨的方法处理
如果数据量很多,这样很低效,有时候是不可取的。谢谢

使用道具

7
8112mmw 发表于 2018-4-19 07:50:28 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-4-18 11:28
哥们,你很厉害!以后有问题,还多指教!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 11:56