
sas base编程
qq1323362960
这个作者很懒,什么都没留下…
展开
-
生成月度数据
data yu; data=.; do i=0 to intck("month",'01jan2013'd,"01jan2014"d); time=intnx("month",'01jan2013'd,i,"b");output; end; format time monyy.; drop i;run;原创 2013-04-13 18:46:54 · 2258 阅读 · 0 评论 -
Using Functions SYSFUNC and IFC to Conditionally Execute Statements in Open Code
Using Functions SYSFUNC and IFC to Conditionally Execute Statements in Open CodeRonald J. Fehd, Centers for Disease Control and Prevention, Atlanta, GA, USA转载 2011-04-11 21:39:00 · 1328 阅读 · 0 评论 -
条件判别命令---ifc&ifn
if/else..where等条件判别语句比较常见,ifc&ifn语句的出现提高了某些条件判别的效率.这里从文档里翻译摘录些ifc&ifn的说明.1.语法:IFC(logical-expression, value-returned-when-true, value-returned-when-false value-returned-when-missing>);IFN(logi原创 2012-05-04 20:22:23 · 1367 阅读 · 0 评论 -
提取数据的变量信息content
proc contents 可以用来提前数据的一些信息,利用ods trace on语句可以检查代码运行结果的细节,找到生成变量数据并将其输出。ods trace on;proc contents data=sashelp.class; ods output variables=need;run;ods trace off;熟悉proc contents语句的,也可以一原创 2012-04-20 14:23:25 · 3352 阅读 · 0 评论 -
missing函数
missing()函数是用来检验缺失值的函数帮助文档里有个例子,它是用来检查包含缺失值的变量的:data _null_; input @1 var1 3. @5 var2 3.; if missing(var1) then do; put 'Variable 1 is Missing.'; end; else if m原创 2012-04-17 19:06:23 · 4246 阅读 · 0 评论 -
Safely Merging Many Datasets
如题,该代码摘自“Safely Merging Many Datasets”一文,可以下载原文http://support.sas.com/resources/papers/proceedings11/409-2011.pdf/********************************************************A macro to safely merge al转载 2012-04-28 17:50:59 · 472 阅读 · 0 评论 -
proc sql 语句中的case 表达
proc sql; select name,sex,age,weight,height, case when height> 65 then "Tall" when height else "Average Height" end as New_height from sashelp.原创 2012-04-16 19:50:41 · 4935 阅读 · 0 评论 -
SAS读取含多个子表的EXCEL表
转自:http://www.nesug.org/Proceedings/nesug11/cc/cc17.pdf该文主要应用proc sql将字表文件名赋予宏变量,然后循环读取字表中的变量名。%macro xlread; /**Assign a libname for excel sheet*/ LIBNAME XLSLIB "C:\NESUG-2011\Metabolite转载 2012-04-13 19:32:51 · 4642 阅读 · 0 评论 -
SAS的DM 命令
它的语法结构很简单:DM 'command(s)' ;窗口可以是编辑窗口edit,记录窗口log,或者,输出窗口output.'command(s)'命令必须在引号' '里面,如果是几条命令则必须用分号;隔开即DM语句运行后在执行的SAS语句。简单应用:dm 'flsvlast'; *保存代码;dm 'log; clear; output; clear;'; *清除翻译 2012-04-07 16:00:49 · 7331 阅读 · 0 评论 -
SAS dictionary工具
*得到库信息;proc sql; select * from dictionary.dictionaries;quit;*获取查询表名;proc sql; select unique memname from dictionary.dictionaries;quit;*or;proc sql; select memname from dictio原创 2012-04-06 20:45:30 · 1772 阅读 · 0 评论 -
PROC SQL中的逻辑判别和描述性统计函数
1.逻辑表达:>,*data step;data class_flags; set sashelp.class; tall = (height > 60); male = (sex = 'M'); female = (sex = 'F');run;*proc sql;proc sql; select name, (转载 2012-04-04 19:59:27 · 2387 阅读 · 0 评论 -
iml数据的处理和输入输出
之前在“IML 编程的基本函数概况”博文中有过简单的概述,这里的例子更详尽。http://www.stat.ucl.ac.be/SMCS/serveur/SAS/samples/iml/samp_iml.htmlods html body='datademo.html' ; run ; /*--create filename for class data--*/%macro fil原创 2011-12-09 21:05:14 · 1230 阅读 · 0 评论 -
PROC SQL & DATA Step do the same job
sas中,很多情况下 data setp能够搞定的,proc sql也可以搞定。论坛里面经常碰到一题多解,例如汇总、重复数据、数据合并等问题。很多网友也曾作过一些汇总,且巧浏览网页时发现NESUG 2011的一篇文章总结的相当齐全,特此摘录文中例子。感兴趣的网友可以自己google,原文题目《PROC SQL for DATA Step Die-hards》,作者:Christianna S.原创 2011-12-19 17:22:50 · 2491 阅读 · 0 评论 -
SAS读取复杂的csv文件
最初接触读取excel文件时候,学习过几种简单的读取方式,见: http://blog.youkuaiyun.com/yugao1986/article/details/6359406但最近接触了一些稍微复杂的数据,再简单无变化的调用前面讲到的方法,发现sas总是报错。自己摸索了下,总结两条:首先,数据形式大致形如下面两种情况: 1.方法来自《Reading Delimited Text原创 2011-12-05 19:22:56 · 9638 阅读 · 0 评论 -
proc rank
一个中文博客:http://blog.sina.com.cn/s/blog_6849f0730100we95.html排序方法详解(文档):Proc rank 计算 观测值对应数值型变量的秩次语法: Proc rank ; By variable-1 variable-n ;*分组变量; Var data-set-var原创 2012-05-28 15:42:46 · 2295 阅读 · 0 评论 -
sas tips
1.查询每个月初数据(月底),利用intnx()函数,比较first.(last.)data stocks; set sashelp.stocks; by stock date notsorted; if first.date then output;run;data stocks2; set sashelp.stocks; by stock date not原创 2012-05-04 19:49:50 · 917 阅读 · 0 评论 -
高低点比较、突破策略 using sas
/*俞高2012年10月15日1) 高低点比较策略通常人们判断趋势处于上升的理由是,当前低点比前一个低点要高,当前高点也比前一个高点要高。判断趋势处于下跌的理由是,当前低点比前一个低点要低,当前高点也比前一个高点要低。如果仅仅以高低点的比较去判断趋势的涨跌,这样的情况一天内会发出上百次而导致交易过于频繁。而且很多高低点之间的价格差距并不大,就是说,有时几乎没有上升,或者上升原创 2012-10-16 11:38:02 · 5110 阅读 · 0 评论 -
套利组合收益的节假日统计
需求:统计节假日效应:节前一周内开仓和节后一周内开仓的收益情况其中,套利组合在开平仓信号内,按照周一-周五分别开仓。解决步骤:1.数据处理1.1导入周一-周五组合的市值数据,组合数据包含开仓时间(start),平仓时间(end), 开仓市值(open),平仓市值(close),平仓沪深300市值(hs_close)。PROC IMPORT OUT= WORK.e原创 2012-10-15 15:29:10 · 2780 阅读 · 0 评论 -
过滤高频数据的微小波动using sas
*1) 均线化因为行情的日内高频价格序列波动比较剧烈,看起来也几乎是杂乱无章的,所以我们为了捕捉趋势需要过滤掉一些干扰的噪声,均线是过滤微小扰动的一种常用的方式,而且也适合用于捕捉趋势。我们将A 个连续的数据取均值,形成MA(A),在本文所作测试中A 取为10,下文都称经过均值化的数据位MA(10)。由于采用的原始价格序列是6 秒高频数据,所以均线化后的数据类似于60 秒价原创 2012-09-21 17:05:25 · 3546 阅读 · 0 评论 -
股票数据合并
一个月在论坛上提问过个股数据合并问题,问题如下:现有100只股票数据txt,命名形如:daysh600000,daysh600004...,daysz000001....,600000等是股票代码(id);数据的结构都一样,内含变量,date,open,high,close等,但不含股票代码:data daysh600000; input date open hight low原创 2012-09-11 13:33:41 · 2707 阅读 · 0 评论 -
读光大证劵“股指期货微观市场初探—高频数据、交易的解读”笔记
读光大证劵“股指期货微观市场初探—高频数据、交易的解读”笔记/*交易信号1: 根据每笔交易价格与交易前报价的关系确定此笔交易的触发方向,即买方触发还是卖方触发。 如价格与买一接近,则此单被定为卖单触发;如价格与卖一接近,则被定为买单触发。 如价格与买一和卖一距离相等,则不确认这单的触发方向。 */data trade_test1; set m_te原创 2012-09-27 16:47:10 · 3921 阅读 · 0 评论 -
Steps to implementing a scan loop in SAS
Steps:1. Store the number of observations in a data set to a macro variable (RECCOUNT)2. Increment a variable (I) fromone to RECOUNT using a %DO loop3. Use the FIRSTOBS option in a DATA step to转载 2012-09-07 22:51:25 · 2072 阅读 · 0 评论 -
缺失值添加帖子汇总
https://communities.sas.com/thread/35155https://communities.sas.com/message/129069#129069https://communities.sas.com/message/109396#109396https://communities.sas.com/message/121311#121311https转载 2012-07-23 22:07:34 · 1029 阅读 · 0 评论 -
sas用于时间的函数
处理股票数据,经常要对时间变量作处理,特意摘录sas.support.com的样例来学习sas的用于时间的函数.另外《DATE HANDLING IN THE SAS ® SYSTEM》一文中也有很多详细的例子。*计算年龄;/* Create sample data */data birth; input name $ bday :mmddyy10.;datalines;转载 2012-06-23 22:11:56 · 6648 阅读 · 0 评论 -
表链接proc sql
朱世武的书的例子很详细,现在想想基本上涵盖了一些论坛上的问题./*21.1.1 简单连接*/proc sql;select * from resdat.china, resdat.usa;quit/*21.1.3 内部连接*/proc sql;select * from resdat.china, resdat.usawhere china.level=usa.level;q转载 2012-07-02 20:13:18 · 2590 阅读 · 0 评论 -
A股股票小参数计算
libname yu "E:\yugao\时间跨度相关\TXT";*sh600000数据测试;data test; set yu.tar(rename=(var1=date var2=open var3=high var4=low var5=close原创 2012-07-12 17:10:38 · 1064 阅读 · 0 评论 -
实习流水帐
1.华泰柏瑞沪深300ETF申购赎回清单libname yugao "E:\yugao\work\htbr300ETF";data yugao.ht120531; infile "Z:\300_0531.ETF" dlm="|" firstobs=15 obs=300 lrecl=1024; retain fundid fundname fundnum cashrep原创 2012-05-31 17:51:03 · 1343 阅读 · 0 评论 -
比对沪深300成份股派息情况
/*目的:比对沪深300成份股派息情况细节:proc import读取沪深300成份股信息,从中财网提取A股派息情况(目前系统过粘贴成文本进而导入sas), 最后proc sql依据股票ID进行合并处理遇到的问题:在合并过程中会遇到两数据变量的属性不一致的问题,merge...by报错,proc sql结果多于300条记录*/*导入沪深300数据,该数据系20120原创 2012-06-21 15:41:25 · 3521 阅读 · 0 评论 -
数据筛选first. and last.
/*期货数据筛选。期货数据包含:合约代码/行情日期/行情时间/各种价格等变量,期货数据结构较复杂。要筛选出指定日期相对应的合约,需要利用first. last.*/DATA GUZHI;*合并股指数据,对变量进行重命名,筛选出部分重要变量; set base.quote:(rename=(_COL2=fundid _COL4=open1 _COL9=high1 _COL10=low原创 2012-07-04 14:01:51 · 759 阅读 · 0 评论 -
利用filename and pipe读取文件
最近在网上看到一些关于批量读取文件的帖子,想到今后定会遇到,特作记录。一.Filename1.filename function语法a.FILENAME(fileref )帮助文档里面有着经典的例子:**Example 1: Assigning a Fileref to an External File ;%let filrf=myfile;%let rc=%sy原创 2011-12-03 14:16:26 · 12786 阅读 · 1 评论 -
CALL SYMPUT Routine
CALL SYMPUT(macro-variable,value);macro-variable can be one of the following items:a character string that is a SAS name, enclosed in quotation marks. For example, to assign the转载 2011-12-01 20:06:19 · 2370 阅读 · 0 评论 -
sas/iml矩阵算术
这样的资源网络上是有的,不过大都是英文,这里姑且进行一些拾牙慧,用汉语进行标注。1.行列式*行列式特征;proc iml; reset print log; A = {3 1, 2 4}; r = det(A); *行列式的值; r = det(A[{2 1},]);*交换行列式的行行列式变号; r = det(A[,{2 1}]);*交原创 2011-11-06 13:41:25 · 10775 阅读 · 0 评论 -
数据的更新或修改
举例学习update语句——资料来源http://support.sas.com/resources//**************************************************************//* Create pretend dat原创 2011-02-28 21:19:00 · 477 阅读 · 0 评论 -
无效的字符数据的处理
以之前的数据(clean.patients)为例,如果我们要识别字符型变量比如Gender等是否有效,以及列出不合要求的数据,我们可以有以下几种选择。1.data steptitle "Listing of invalid patient numbers and data原创 2011-02-27 08:30:00 · 2525 阅读 · 0 评论 -
缺失数据检查
很多数据集里都包含了缺失数据,且不论什么原因导致了数据的缺失,就缺失数据问题我们应作何处理??1.检查是否存在缺失缺失数据形成的原因很多,可能是遗落,也可能是字符型数据与数值型数据混淆。阅读SAS log通常可以得到原因。2.计算缺失值个数对于数值型数据,计算缺失原创 2011-02-25 20:19:00 · 1697 阅读 · 0 评论 -
节日快乐
节日快乐 DATA _NULL_; /*Initialize DSGI*/ RC = GINIT (); /*Open a graphic segment*/ RC = GRAPH ('CLEAR'); /*Assign原创 2011-10-01 20:32:25 · 512 阅读 · 0 评论 -
Splitting a Huge dataset to smaller datasets
http://communities.sas.com/message/102641#102641 http://bbs.pinggu.org/forum.php?mod=viewthread&tid=886738&page=1#pid9952820http://bbs.p原创 2011-10-11 10:42:21 · 845 阅读 · 0 评论 -
读取文件问题
tianwild在其日志中做过详细的记录,题为《读取文件夹下所有相同文件》,链接为http://www.mysas.net/sns/index.php?app=blog&mod=Index&act=show&id=1834&mid=43恰巧,mysas论坛上有一问,不转载 2011-09-23 21:34:35 · 1130 阅读 · 0 评论 -
Some examples about perl expression
详见:http://www2.sas.com/proceedings/sugi29/265-29.pdf ***Primary functions: PRXPARSE, PRXMATCH;/*Program 1: Using a Perl regular expres转载 2011-09-16 16:02:43 · 740 阅读 · 0 评论 -
检查变量,数据是否存在
<br />内容如题:检查某变量是否存在于数据中,某数据是否存在于数据库中<br />1.open,varnum函数<br />data class;<br /> set sashelp.class;<br />run;<br />proc print;<br />run;<br />data _null_;<br /> a=open('class'); <br /> b=varnum(a,'age'); /*变量age存在的话,b不为0*/<br /> c=varnum(a,'sex原创 2011-04-28 21:04:00 · 1214 阅读 · 0 评论