楼主: hansenlin369
3223 9

求教:同一组内选出前几行 [推广有奖]

  • 2关注
  • 0粉丝

初中生

28%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
87 点
帖子
13
精华
0
在线时间
5 小时
注册时间
2011-5-12
最后登录
2015-5-17

楼主
hansenlin369 发表于 2013-6-25 04:36:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据结构如下,我想从每个组里(pos 相同为一组),如果改组多于两行,则选出前两行,如果只有一行,则选这一行。请问代码该怎么写?谢谢!!

name

Pos

nr

SYN35330

1

3

SYN35333

1

3

PZE101001116

1

3

SYN11121

2

3

SYN11114

2

2

SYN30750

2

3

SYN30737

2

3

PZE101002919

2

3

PZE101003026

2

3

SYN11115

2

2

PZE101002282

2

3

SYN9363

3

3

SYN9378

3

3

PZE101003141

3

3

SYN11492

4

3

PZE101003785

4

3

PZA003931

5

3

PZA028698

6

3

PZE101005766

6

3

PUT163a503259232184

6

3



二维码

扫码加我 拉你入群

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

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

关键词:name 数据结构 POS A50 put

本帖被以下文库推荐

  • · sas|主题: 59, 订阅: 14

沙发
yongyitian 发表于 2013-6-25 08:26:56
  1. data test;
  2. input name : $18.  Pos nr;
  3. datalines;
  4. SYN35330 1 3
  5. SYN35333 1 3
  6. PZE101001116 1 3
  7. SYN11121 2 3
  8. SYN11114 2 2
  9. SYN30750 2 3
  10. SYN30737 2 3
  11. PZE101002919 2 3
  12. PZE101003026 2 3
  13. SYN11115 2 2
  14. PZE101002282 2 3
  15. SYN9363 3 3
  16. SYN9378 3 3
  17. PZE101003141 3 3
  18. SYN11492 4 3
  19. PZE101003785 4 3
  20. PZA003931 5 3
  21. PZA028698 6 3
  22. PZE101005766 6 3
  23. PUT163a503259232184 6 3
  24. ; run;

  25. data want;
  26.     set test;
  27.       by pos;
  28.     if first.pos then do;
  29.        ipos=1; output;
  30.        end;
  31.     else ipos+1;
  32.     if ipos=2 then output;
  33.     drop ipos;
  34. run;
复制代码
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Stakiny + 3 + 3 + 3 精彩帖子
yzsxdlcc + 1 + 1 分析的有道理
hansenlin369 + 1 + 1 + 1 精彩帖子
Imasasor + 60 + 60 + 4 + 2 + 3 精彩帖子

总评分: 经验 + 60  论坛币 + 60  学术水平 + 9  热心指数 + 7  信用等级 + 7   查看全部评分

藤椅
hansenlin369 发表于 2013-6-25 14:22:54
yongyitian 发表于 2013-6-25 08:26
谢谢!!学长能不能给我推荐本学习SAS的书?我经常用SAS的help,感觉挺乱的。

板凳
yongyitian 发表于 2013-6-26 10:28:07
hansenlin369 发表于 2013-6-25 14:22
谢谢!!学长能不能给我推荐本学习SAS的书?我经常用SAS的help,感觉挺乱的。
下面所列的书好象坛中都有, 但并没有都读过, 只是从书名理解. 所以不一定合适.

一般性了解:   
The Little SAS Book
Learning SAS by Example

系统学习:
SAS course notes   或者 SAS Certification Preparation   Guides
SAS Programming I - Essential Course Notes
SAS Programming II - Manipulating Data with the Data Step
SAS Programming III - Advanced Technique
SAS Certification Preparation Guide - BASE Programming
SAS Certification Preparation Guide - Advanced Programming

专题学习
SQL Processing with SAS Course Notes   或者  PROC SQL by Example - Using SQL within SAS
SAS Macro Language Course Note         或者  SAS macro programming made easy

进一步提高
SAS Functions by Example
Data Preparation for Analytics using SAS
Codys Data Cleaning Techniques Using SAS

特殊问题
SAS Document - examples
Google
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
pobel + 2 + 2 + 2 热心帮助其他会员
boe + 1 + 1 + 1 耐心,佩服!

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

报纸
boe 发表于 2013-6-26 15:57:49
yongyitian 发表于 2013-6-25 08:26
proc sql可以吗?
Gorgeous girl , I love !

地板
yongyitian 发表于 2013-6-26 20:49:19
boe 发表于 2013-6-26 15:57
proc sql可以吗?
是说用 PROC SQL 解决一楼的问题? 好象有点难。 等等高人吧。

7
yongyitian 发表于 2013-6-27 10:28:51
boe 发表于 2013-6-26 15:57
proc sql可以吗?
Here is the solution by using PROC SQL
The data test is from upper floor      
Since there is no first.by_variable in proc sql, iit need to create a row number column, and a few tables.

有点复杂,可能还有简单的方法。
  1. proc sql;
  2.     create table result1 as
  3.     select row_number,  name, pos, nr
  4.         from (select monotonic() as row_number, * from test)
  5.         group by pos
  6.         having row_number in (select min(row_number)
  7.                               from (select monotonic() as row_number, name, pos, nr
  8.                                     from test)         
  9.                               group by pos);

  10.     create table temp2 as
  11.         select row_number, name, pos,nr
  12.         from (select monotonic() as row_number, * from test)
  13.         where row_number not in (select row_number from result1);

  14.     create table result2 as
  15.         select row_number, name, pos, nr
  16.         from temp2
  17.         group by pos
  18.         having row_number in (select min(row_number)
  19.                               from temp2
  20.                               group by pos);

  21.     create table want as
  22.     select row_number, name, pos, nr
  23.         from result1
  24.         union corresponding all
  25.         select row_number, name, pos, nr
  26.         from result2
  27.         order by pos, row_number;

  28.     drop table temp2, result1, result2;
  29. quit;
复制代码
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
Stakiny + 3 + 3 + 3 精彩帖子
hansenlin369 + 1 + 1 + 1 精彩帖子
boe + 1 + 1 + 1 精彩帖子

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

8
hansenlin369 发表于 2013-6-27 12:21:20
yongyitian 发表于 2013-6-27 10:28
Here is the solution by using PROC SQL
The data test is from upper floor      
Since there is n ...
谢谢!谢谢热心、耐心解答!!

9
hansenlin369 发表于 2013-6-27 14:25:58
yongyitian 发表于 2013-6-27 10:28
Here is the solution by using PROC SQL
The data test is from upper floor      
Since there is n ...
学长,如果有时间的话,能不能帮忙回答下另一个问题? https://bbs.pinggu.org/thread-2502360-1-1.html
谢谢!

10
jolterheadmmtt 发表于 2013-8-13 16:56:21
好资料 mark

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

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