1. sas中怎么提取某一项中一年的最后一个值
这个你按股票+时间排序,(proc sort).再取最后一条就行行了 if last就好了;
或者直接,sort+ nodupkey 就好了
2. sas中如何选出需要的时间段的数据
方法如下:
data dst.ifa;
infile 'C:\Documents and Settings\CY\桌面\a.txt' dlm=',';
input date mmddyy10. time $ open high low close volume amount;
format date mmddyy10.;
run;
data dst.ifa;
set dst.ifa(where=(date='04/MAY/2010'd));
run;
在第一个数据步data dst.ifa;中,定义的数据集名为dst.ifa,在set语句中,缺省的引用数据集为work.ifa.而且语句date='05/04/2010'非法,必须将日期转换成SAS的日期格式,即data='04/MAY/2011'd;.
3. SAS 分组排序后编号,取出每一组编号最大值
假设数据集名为datause,那么:
proc sql;create table datause_counting asselect bl1, count(bl3) as Group_Size from datausegroup by bl1;Create table newdatause asselect a.*, b.group_size from datause a left join datause_counting bon a.bl1=b.bl1;quit;
4. 请问如何用SAS查找并读出数据
用下面的程序将excel表格导入到SAS中,
proc import out=a1/*a1为表格1,表格2用同样的方法导入*/
datafile=" ### "
dbms=excel 2000 replace;
range="a1";
getnames=yes;
run;
用下面的程序将a2中符合a1条件的数据筛选出来就行了:
proc sql;
create table a3 as select 股票代码,收盘价 from a1,a2 where a2.股票代码=a1.股票代码;
run;
a1为表格1
a2为表格2
a3是结果
5. sas用过程步好还是用数据步好
每个SAS程序可以由许多部构成,一些简单的程序,是由许多完成单个动作的“程序步”和一些设定环境的语句构成的。SAS只有两种程序步:
1. 数据步(Data Step):读入源数据文件和SAS数据集,修改、编辑、或创建SAS数据集或文本文件;
2.过程步(Proc Step):面向SAS数据集,完成某个特定的计算,分析,和呈现的功能。
每个程序都是由若干语句构成。每个语句是有一个关键词开始,并以分号结束。通常就用开始的关键词命名这个语句。
DATA语句与PROC语句分别标志着数据步和过程步的开始,RUN语句或另一个程序的开始标志着程序的结束。
SAS程序的书写规则:
SAS程序是由SAS语句构成的。每个语句由关键词开始,分号结束。在程序编写时,SAS语句的书写格式比较自由,即:
1.语句可在行的任一列开始和结束;
2.语句的词之间可以用一个或多个空格符或其它特殊字符隔开。
3.一个语句可以分写为多行(换行时,换行符相当于一个空格符)
4.多个语句也可以写在同一行。
6. 怎样用SAS对股市数据进行单变量描述统
SAS需要变成 你把数据整理好 用proc means过程对数据集进行统计分析,可以得到非缺失值数、缺失值数、权重和、均值、总和、最小值、最大值、全距、未校正平方和、校正平方和、方差、标准差、标准误、变异系数、偏度、t值、大于t值概率,共17个统计量
7. SAS错误:用 等于 (=) 的表达式具有不同数据类型的组件.
我不大清楚你的error message 代表什么意思,你可以试试下面这个程序:
proc sql;
create table resdat.final as
select x.* , y.*
from resdat.or x
left join
resdat.a y
on (x.stkcd=y.stkcd and x.year=y.year and x.name=y.name);
quit;
上面的程序中 用 x 代表resdat.or, y 代表 resdat.a。
我用了 left join为例,根据你的需要可以用right join, inner join, full join. 网上可以搜到对应的含义。
Does it work?
8. 怎样用sas将数据分类出只有特定年份的数据
给个方向, 你自己试看看
data test;
format date yymmdd10. ;
format time time8.;
date = '01jan2013'd;
do time = '15:45:00't to '16:15:00't by 60;
output;
end;
date = '02jan2013'd;
do time = '15:45:00't to '16:15:00't by 60;
if time ^='16:00:00't then output;
end;
run;
data want;
set test;
time_lag = lag(time);
if time = '16:00:00't then output;
else if time - '16:00:00't > 0 and time_lag - '16:00:00't < 0 then do;
time = (time+time_lag) / (time -'16:00:00't)*30;
/* change the calculation as you want */
output;
end;
drop time_lag;
run;