SAS、数据挖掘、金融计算。跟我联系: a@b,a=JiangtangHu,b=gmail.com
JohnTown | 09 七月, 2008 05:57
可以先参考先前介绍正则表达式的元字符的那篇。
SAS对正则表达式 (Regular Expressions, RX) 的支持,表现在以下两大类函数(包括Call Routines)中:
这两个正则表达式系统功能类似,只是语法略有差别。它们的对应如下:
SAS Perl Regular Expressions SAS Regular Expressions 版本 SAS9-- SAS6.12-- 函数前缀 PRX RX 定义正则表达式的函数 PRXParse RXParse 定位函数 PRXMatch RXMatch Call PRXSubstr Call RXSubstr Call PRXPosn Call PRXNext PRXParen 文本替换函数 PRXChange Call PRXChange Call RXChange 释放内存函数 Call PRXFree Call RXFree 代码调试函数 Call PRXDebug
在RX系统中,比如,用$d或$D来表示数字0-9,在PRX中,用\d,\D却表示所有不是数字的字符。同时学习两套系统很容易弄混。建议只使用SAS PRX。
(待续……)
JohnTown | 03 四月, 2008 06:50
好些日子没能更新这个博客,转一个我生活博客里的好玩东西,关于“男女不均衡和希尔伯特的旅馆”:
********************************************************************
看一个大龄相亲的报道。不均衡的几千万男性同胞,是祖国和人民的一大关注热点。有好事者提议,比如,现在的30岁男,俯视下一代,找个20岁女,到下一辈的30岁男,如法炮制,也找20岁女下手,如果循环往复,神州大地就不存在男女比例不平衡的问题了。咋一听,还以为到了希尔伯特的旅馆。
说,有个人去投宿,但那家旅馆已经满员了,意思是,比如,这家旅馆有很多层,每层就一个房间,每个房间都住了一位客人,是为满员。但旅馆老板有办法,让这个投宿的客人安心入住。首先,他就把这个客人安排在第一层,把原先住在第一层的客人安排到第二层,把原先在第二层的客人安排在第三层,就这么一直挪过去。记住,刚才我们说这家旅馆有很多层,很多的意思是,你总有办法把客人一层一层往上挪,这样,那位原先以为住不到店的客人也就能安排好了。这家旅馆就叫做“希尔伯特的旅馆”,希尔伯特是一个数学家的名字。
理解希尔伯特的旅馆,可以举个例子,比如,有两个无穷可数的数列,一是自然数列,二是偶数数列。无穷是说,这个自然数列从1、2、3、4、5、6、7、8、……等等一直持续下去,这个偶数数列2、4、6、8、…… 也是一直持续下去,可数是说,虽然上面两个数列是无穷的,但是你有兴致,却可以掰着手指头一二三四地跟着数下去。不可数的,比如在数轴上分布得密密麻麻的实数数列,一会是1.1,一会是1.111111111111111111111111111111111111,就叫人没法跟着数了。
扯远了,还是刚才两个无穷数列
A: 1、2、3、4、5、6、7、8、……
B: 2、4、6、8、……
如果有像A数列展示一样多的旅客,而只有B数列一样多的房间,看着似乎就有一半的人住不了店了(每个房间只能住一个人)。——如果你真的这么想,就要想想上面的希尔伯特旅馆,看看如何有办法让A数列多的人住进B数列多的房间:
A: 1、2、3、4、5、6、7、8、……
B: 2、4、6、8、10、12、14、16……
方案是这样的,想像一下客人全部以自然数列编号,房间都是偶数号,就让编号为1的客人住在B中编号为2的房间,客人2住4号房间,客人3住6号房间,这么一个个数过去,所有的客人都能住上店了。上面的事实有一个惊人的结论,即A数列和B数列,在某种计数下,竟然是一一对应的。一一对应,自然每个客人就都有自己的房间了。说“某种计数”,是按上面的匹配程序走,不是我们一般说的个数。
扯更远了,希尔伯特的旅馆是没问题的。接下来我是想驳斥上面说的循环往复解决男女不平衡问题,那纯粹是扯淡,跟希尔伯特的旅馆,只是有些似是而非的联系。我要睡了(我已发现此命题的一个真正奇妙的证明,但是这页边空白太小,写不下这个证明。……)
JohnTown | 14 三月, 2008 18:26
好久没更新,先贴一个小东西,稍些改变一下这空间里的萧条气氛。前些日子有个网友问:
这里我有一个小问题,我在sas里面同时会编写很多程序,但是不知道如何用快捷键在这些编辑界面中切换,我不得不开好几个sas然后用Alt+Tab来切换,这样很麻烦,不知道你有什么tip么?
答曰:
JohnTown | 05 三月, 2008 17:25
TIOBE程序语言排名是各种语言流行程度的指标,每月更新。它的评分是参考全球范围内的技术工程师、讲师以及第三方厂商的意见,通过google、MSN、Yahoo!等常用的搜索引擎来计算每种程序设计语言的流行指数。TIOBE排行榜是程序员查看自己掌握的编程技能是否过时的权威参考。具体的评分标准,可以参阅其官分评分文档。现在最新的排行榜是(前20名,2008年3月):
只是些细微的月度变化,通用编程语言还是Java、C\C++,脚本语言还是3P(PHP、Perl、Python)的天下。上面把Delphi和Pascal单列,无疑削弱了Pascal的排名。SQL的扩展语言PL/SQL入榜,表明了Oracle管理员和程序员在数据库领域的地位(SQL不是TIOBE定义的编程语言,PL/SQL才是过程式的程序语言)。上面还有一个有趣的语言就是COBOL,最近似乎有兴起之势,有兴趣可以读读这篇《一个COBOL程序员的自白》。接下来我感兴趣的是SAS。
SAS这个月的排名是14,去年同期的排名是11,不过还保持了上两个月内评分超过0.7%的增长率,因此还有A-的评分。SAS排名的变动如下:
波动是够大的,不过总体的上升趋势还是比较明显。大致地,01年比较平淡,02年降些,03年又有极大的拉升,04年初有减弱现象,不过把一个相对高的分数带给了05年,然后整个05年就在一个水平波动,整个06是SAS最被关注的时候,而整个07年就一直走下坡路。今年年初,SAS的被关注程度还在往下跌,不过按着以前的模式,SAS在年初的表现一般都不怎么惹人注目。现在SAS的被关注程度正处于谷底,整个08年排名的上升趋势还是挺乐观的。以上展示的是逐月波动,对照一下同期其他流行语言的情况,你对类似波动的理解就会全面些:
顺便提一下,现在这个排行榜,Fortran是24名,Matlab是26,R是45,Maple、Mathematica、SPSS的排名更50之外。
JohnTown | 04 三月, 2008 19:00
doubanclaim0d52cda29601dd19
JohnTown | 26 二月, 2008 17:47
笛卡尔乘积(Cartesian Product)返回几个集合中所有元素的组合情况。比如数据a中存有3种车型的数据,数据b中存有两种可能的颜色,则笛卡尔乘积运算则返回3×2=6种可能的排列,新的数据看起来像这个样子:
Obs car color
1 a A
2 a B
3 b A
4 b B
5 c A
6 c B
两种解决方案,一是data步:
data a;
input car$;
cards;
a
b
c
;data b;
input color$;
cards;
A
B
;data ab;
set a;
do i=1 to n;
set b point=i nobs=n;
output;
end;
run;
proc print data=ab;run;
proc sql可能会直观些:
proc sql;
create table ab2 as
select a.*,b.color
from a,b;
quit;
proc print data=ab2;run;
又,SAS求职者面试中一道传统的题就是,求一个连续数列的累计和,比如求1到100中所有奇数的和。两个直观的解答是:
data a;
do i=1 to 10;
*retain j 0;
if mod(i,2) ne 0 then j=sum(j,i);
if mod(i,2) ne 0 then output;
end;
run;data b;
do i=1 to 10 by 2;
j+i;
output;
end;
run;
这里值得一提的是第二种解答中,用了一个SAS专用的求和语句“变量名+表达式”(j+i)。这个求和语句的好处就是它集成了retain语句和sum函数的一些功能,而且使赋值语句更为简洁。
JohnTown | 26 二月, 2008 03:00
打算把开在Windows Live Spaces的(所谓)技术博客挪到BiCubes来。以后这里就是主场了,Spaces那个权当镜像。当然,对习惯用RSS阅读器的朋友来说,我这个转移倒是无甚影响。现在BiCubes的博客系统还不支持博客搬家,这里先把我在Space上的文章整理一下:
SAS
SAS学习笔记(4):Editing and Debugging SAS Programs
SAS学习笔记(3):Referencing Files and Setting Options
SAS学习笔记(2):Using the Programming Workspace
数据挖掘
几个有名的数据挖掘与机器学习的练习数据集(一)
数据挖掘入门书:Roiger&Geatz《数据挖掘教程》清华版2003
Ryszard Michalski
KDNuggets调查2007:数据挖掘方法论
KDnuggets调查:数据挖掘方法和工具
统计学备忘录
白话统计(2):中心极限定理
白话统计(1):平均数、中位数、众数
提升指数、提升表和提升图
Excel债券计算函数
Paul Wilmott's Books on Quantitative Finance
其他
BNF标记法:简介
SQL——在Oracle SQL*Plus里工作(1):基础篇
Windows下运用Linux工具(一):G++/Cyguns
Excel-备忘录
在UltraEdit中配置Java编译器
写在前面——我要经营的技术博客
JohnTown | 21 二月, 2008 06:25
| « | 九月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | |||||