由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - SAS code 问题
相关主题
SAS helpSAS code help
请教一sas codeSAS 编程问题 (有包子)
SAS快捷键问题How to combine overlapped data
how to trasform data.ask SAS code
help:data manipulation工作中SAS问题 —另一个问题请教!
求问SAS技术问题,one row to multiple rowSAS 问题求助
sas question请教:get next record using BY group (SAS code data manipulation)
请教SAS问题SAS DATA 求助
相关话题的讨论汇总
话题: 10006话题: 10004话题: counter话题: sub话题: 10005
进入Statistics版参与讨论
1 (共1页)
h**h
发帖数: 488
1
NO Sub_no
10004 1
10004 2
10005 1
10006 1
10006 1
10006 2
10006 3
10007 1
现在保留同样No 但sub有几个的。比如10005 and 10007只出现一次,不保留。
有efficient的方法来解决类似这样挑选数字的吗。
k*******a
发帖数: 772
2
try:
if first.no and last.no then delete;
h**h
发帖数: 488
3
Didn't work. Nothing is deleted.
k*******a
发帖数: 772
4
data a;
input no sub_no;
datalines;
10004 1
10004 2
10005 1
10006 1
10006 1
10006 2
10006 3
10007 1
;
data a;
set a;
by no;
if first.no and last.no then delete;
proc print data=a;run;
h**h
发帖数: 488
5
我怎么忘了by no,怪不得什么都没有delete。
进一步,如果我想保留特定sub_no,比如10006有3个,这个怎么做呢。我总想有没有什
么search的路径,可以在data set中制定的column搜索需要的record。
c*******7
发帖数: 2506
6
or try
proc sql;
select * from a
group by no
having count(*)>1;
quit;
j**********3
发帖数: 305
7

用retain 跟 first. 做个counter,不就好了
data a;
input no sub_no;
datalines;
10004 1
10004 2
10005 1
10006 1
10006 1
10006 2
10006 3
10007 1
;
data a;
set a;
by no;
retain counter;
if first.no then counter=0;
counter+1
run;
data sub_no2;
set a;
if counter=2 then output ;
run;

【在 h**h 的大作中提到】
: 我怎么忘了by no,怪不得什么都没有delete。
: 进一步,如果我想保留特定sub_no,比如10006有3个,这个怎么做呢。我总想有没有什
: 么search的路径,可以在data set中制定的column搜索需要的record。

h**h
发帖数: 488
8
这样选择,10004有2个,counter选出来了;10006有4个,但counter也有2 ,也被
output出来。这样显示10004和10006都有2个,其实不是。

【在 j**********3 的大作中提到】
:
: 用retain 跟 first. 做个counter,不就好了
: data a;
: input no sub_no;
: datalines;
: 10004 1
: 10004 2
: 10005 1
: 10006 1
: 10006 1

h**h
发帖数: 488
9
This works。It can show the number of observation I search.

【在 c*******7 的大作中提到】
: or try
: proc sql;
: select * from a
: group by no
: having count(*)>1;
: quit;

h**h
发帖数: 488
10
NO Sub_no time
10004 1 01/01/2010
10004 2 01/01/2010
10005 1 01/02/2010
10006 1 01/03/2010
10006 1 01/03/2010
10006 2 01/04/2010
10006 3 01/05/2010
10007 1 01/10/2010
加上时间,同一个no应该是同一天完成的。但比如10006是两天完成的。如何挑出来,
或者去除这种不在一天完成的No。
相关主题
求问SAS技术问题,one row to multiple rowSAS code help
sas questionSAS 编程问题 (有包子)
请教SAS问题How to combine overlapped data
进入Statistics版参与讨论
j**********3
发帖数: 305
11

那就加个last.no 判断就好了
data a;
set a;
by no;
retain counter;
if first.no then counter=0;
counter+1
run;
data sub_no2;
set a;
by no;
if last.no and counter=2 then output ;
run;

【在 h**h 的大作中提到】
: 这样选择,10004有2个,counter选出来了;10006有4个,但counter也有2 ,也被
: output出来。这样显示10004和10006都有2个,其实不是。

c*******7
发帖数: 2506
12
挑出来-
proc sql;
create table b as
select no,count(unique(time)) as n
from a
group by no
having calculated n>1;
quit;
然后去掉-
proc sql;
create table a_new as
select * from a
where no not in (select no from b);
quit;

【在 h**h 的大作中提到】
: NO Sub_no time
: 10004 1 01/01/2010
: 10004 2 01/01/2010
: 10005 1 01/02/2010
: 10006 1 01/03/2010
: 10006 1 01/03/2010
: 10006 2 01/04/2010
: 10006 3 01/05/2010
: 10007 1 01/10/2010
: 加上时间,同一个no应该是同一天完成的。但比如10006是两天完成的。如何挑出来,

h**h
发帖数: 488
13
这样用SQL可以work。Thanks.
p***r
发帖数: 920
14
非常生动的例子,学了很多基本知识
u**x
发帖数: 41
15
第二个data step 前先sort by no 试试!

【在 j**********3 的大作中提到】
:
: 那就加个last.no 判断就好了
: data a;
: set a;
: by no;
: retain counter;
: if first.no then counter=0;
: counter+1
: run;
: data sub_no2;

1 (共1页)
进入Statistics版参与讨论
相关主题
SAS DATA 求助help:data manipulation
SAS question求问SAS技术问题,one row to multiple row
SAS问题请教sas question
弱问一个SAS 里data managerment的问题请教SAS问题
SAS helpSAS code help
请教一sas codeSAS 编程问题 (有包子)
SAS快捷键问题How to combine overlapped data
how to trasform data.ask SAS code
相关话题的讨论汇总
话题: 10006话题: 10004话题: counter话题: sub话题: 10005