由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 菜鸟问个SAS问题
相关主题
关于读数据紧急求助,包子答谢,谢谢了先请教个菜鸟r code问题,一晚上也没搞明白,痛苦。。。
问个简单的SAS如何找出某个变量最大之所在的行?请教一个sas的基本问题
请问怎么样用SAS生成这样一个变量?sas question about position
请教一个 SAS macrosas 程序咨询 数据补充完整
新手求教一个简单的SAS问题想用first累计character的变量,可以吗?
求助一个SAS的问题包子再求sas code~
请问一个SAS proc sql的写法SAS Dataset有什么最简单的办法能知道里面的最大值
请教sas code问题新手问个简单的sas问题
相关话题的讨论汇总
话题: mintime话题: maxtime话题: time话题: end话题: last
进入Statistics版参与讨论
1 (共1页)
s*****a
发帖数: 431
1
写个程序,要调用某个变量的第一个及最后一个观测值,第一个观测值的方法用了
if _n_=1 then a=b;
就是不知道同样的方法,最后一个观测值的位置序号该怎么表示,请SAS高手指点一二
,多谢了!
g**u
发帖数: 205
2
why don't you use first. and last. ?
s*d
发帖数: 32
3
在set的时候可以定义end 这个indicator,比如
data b;
set a end = last;
if last;
run;
s*****a
发帖数: 431
4
我试过用first.和last.可是不行,要先定义end吗?试试看先,多谢!
s*****a
发帖数: 431
5
还是不行啊!我把程序贴上来,请指点!
data a;
set b end=last;
retain mintime maxtime;
if _n_=1 then mintime=time;
if last then maxtime=time;
s=int(maxtime-mintime)/300+1;
n=1;
do while (n<=s);
if time>=mintime+300*(n-1) & time n=n+1;
end;
run;
time是b里的变量,它的第一个观测值是最小值,最后一个观测值是最大值,我其实就
是想调用time变量的最大和最小值,不知道有没有好的办法。
问题挺菜的,学sas不久,网上也查了找不到方法,这里牛人多,只能来这里求教了,
多谢!
s*****a
发帖数: 431
6
唉,自己顶,求大牛们赐教!
s*d
发帖数: 32
7
SAS是行处理的,maxtime最后才得到,之前一直是missing
所以你需要两步, 第一步得到mintime maxtime
然后做数据转换
data minmax(keep=mintime maxtime);
retain mintime;
set a end = last;
if _N_ = 1 then mintime = time;
if last then do;
maxtime = time;
output;
end;
run;
data b;
if _N_ = 1 then set minmax;
set a;
<....fill codes..........>
run;

【在 s*****a 的大作中提到】
: 还是不行啊!我把程序贴上来,请指点!
: data a;
: set b end=last;
: retain mintime maxtime;
: if _n_=1 then mintime=time;
: if last then maxtime=time;
: s=int(maxtime-mintime)/300+1;
: n=1;
: do while (n<=s);
: if time>=mintime+300*(n-1) & time
s******r
发帖数: 1524
8
It works.
data b;
do i =1 to 100;
time=intnx('day','01Jan2013'd,i);output;
end;
run;
data a;
set b end=last;
retain mintime maxtime;
if _n_=1 then mintime=time;
if last then maxtime=time;
run;
or you can do,
proc sql;
create table b as
select max(time) format=mmddyy8. max_time,
min(time) format=mmddyy8. min_time
from b;
quit;run;

【在 s*****a 的大作中提到】
: 还是不行啊!我把程序贴上来,请指点!
: data a;
: set b end=last;
: retain mintime maxtime;
: if _n_=1 then mintime=time;
: if last then maxtime=time;
: s=int(maxtime-mintime)/300+1;
: n=1;
: do while (n<=s);
: if time>=mintime+300*(n-1) & time
s*****a
发帖数: 431
9
学习了,太感谢了!

【在 s*d 的大作中提到】
: SAS是行处理的,maxtime最后才得到,之前一直是missing
: 所以你需要两步, 第一步得到mintime maxtime
: 然后做数据转换
: data minmax(keep=mintime maxtime);
: retain mintime;
: set a end = last;
: if _N_ = 1 then mintime = time;
: if last then do;
: maxtime = time;
: output;

s*****a
发帖数: 431
10
不知道为什么,数据库里maxtime还是无法得到,再研究研究。非常感谢!

【在 s******r 的大作中提到】
: It works.
: data b;
: do i =1 to 100;
: time=intnx('day','01Jan2013'd,i);output;
: end;
: run;
: data a;
: set b end=last;
: retain mintime maxtime;
: if _n_=1 then mintime=time;

l******m
发帖数: 111
11
乍一看,应该是do while 里面的if 从句,里面有两个结果,改成then do; xxxxxxxx;
end;试试看

【在 s*****a 的大作中提到】
: 不知道为什么,数据库里maxtime还是无法得到,再研究研究。非常感谢!
l******m
发帖数: 111
12
其实,如果只是取极值的话,还是用楼上的sql方法最简洁

【在 s*****a 的大作中提到】
: 不知道为什么,数据库里maxtime还是无法得到,再研究研究。非常感谢!
1 (共1页)
进入Statistics版参与讨论
相关主题
新手问个简单的sas问题新手求教一个简单的SAS问题
[合集] SAS问题求助-如何把普通变量的值传递给宏变量求助一个SAS的问题
[合集] SAS里如何实现LOCF(LAST OBS CARRIED FORWARD)?请问一个SAS proc sql的写法
请教SAS问题请教sas code问题
关于读数据紧急求助,包子答谢,谢谢了先请教个菜鸟r code问题,一晚上也没搞明白,痛苦。。。
问个简单的SAS如何找出某个变量最大之所在的行?请教一个sas的基本问题
请问怎么样用SAS生成这样一个变量?sas question about position
请教一个 SAS macrosas 程序咨询 数据补充完整
相关话题的讨论汇总
话题: mintime话题: maxtime话题: time话题: end话题: last