SAS中文论坛
标题:
SAS JMP9和IML/Studio3.2开始兼容R
[打印本页]
作者:
shiyiming
时间:
2010-11-8 12:50
标题:
SAS JMP9和IML/Studio3.2开始兼容R
From sxlion's blog on saslist
SAS公司产品JMP9和IML/Studio3.2开始兼容R, 注意不是SAS系统。 2010.10.8日Rick Wicklin在他博客中提到在SAS公司的独立模块IML/Studio3.2(可以调用SAS IML模块和使用IMPLUS语言),用IMLPLUS语言(非SAS原系统语言,在IML模块语言上进行了扩展)也可以调用R语句,当然前提是你要两者都安装了。继IML/stuidio模块开始兼容R以后,2010.10.18日,SAS公司新推出的另一个工业界颇有建树的JMP9也可以调用R软件。 也许SAS公司推出个兼容功能好像没什么大不了的,可是要知道很多人一直把R作为SAS的假想敌,R软件是开源的,免费,而SAS软件所属的SAS公司是地地道道的私人公司,钱多的懒得上市。这两个软件主要的基本功能是进行统计分析,两者有一定的可替代性,当然各有所长的地方。既然是同类软件,必然有相互竞争的地方,两边的粉丝一直都有口水战,不过2009年有一次小高潮,见胡江堂的R与SAS之争一文。公共媒体《纽约时报》的一记者Ashlee Vance发文Data Analysts Captivated by R’s Power,激起了R和SAS铁粉所在社区的狂热口水战。这是统计软件史上第一次粉丝大PK,非常激烈。当然激烈程度比不上这几天的360与QQ之间的PK(两者有本质区别:一个是主动热情,一个是被动郁闷),毕竟统计只是属于一小部分人的领域,寂寞的统计程序员们难得被关注一次,自然非常主动热烈的。 至此高潮发生在国外,国内SAS或R粉还是很平静,不过胡兄在2010年4月18日又发一文Think SAS(一),这一思考不要紧,立马引来国内外认识中文的SAS或R粉们的热烈讨论,跟贴里面著名ID频现,很多IP来自国外,这个也算是国内发生的第一次SAS粉与R粉们的大型带高潮的PK把。不过在R都PK,冲突难免,部分意见不堪阅读。 国外那次PK中,当时就有一派的意见就是将两者融合,谁融合谁?肯定是SAS融合R,这明摆这的。但是会不会融合,什么时候融合?这是个问题。只是粉丝提出来,SAS公司没有回答。不知道是什么原因,今年SAS公司将另两个独立的软件JMP和IML/Studio最新版本纷纷兼容R, JMP和IML/studio差不多算是SAS公司的冷门角色(JMP可能普及多一些),因此这功能受关注度不多,SAS粉集中地SAS-L邮件列表没什么讨论,只有一个卖R课程广告的,大家都很平静,应该是影响不大。虽然JMP和IML Studio为SAS和R之间搭起了一座桥梁,但是毕竟要过桥,终归是间接的。为什么SAS公司不直接补丁一个兼容R的呢?是不是在即将发行的SAS9.3或者SAS10里面发布这个功能呢? 技术上SAS兼容R,没有问题;R兼容SAS,就有问题。要不要融合,什么时候,完全看SAS公司的决策了。这次在所出两个新版本的独立软件中融合R,是否为了探路,还是广告下这个两个不广为人知的软件,这个不可得知,也没有相关消息放出。 我个人认为很有可能,也许9.3或10里面就可以直接调用R了 。IML/studio,JMP是两个不错的软件,这两个我使用过,我对IML模块和JMP都很有好感。既然这样,我就这里学习下怎么在SAS产品(非SAS系统)下使用R把。 1,JMP9(点击进入软件下载页面)中怎么使用R : 用JMP脚本语言(JSL)来调用R,我感觉JSL和R风格相似,这样使用起来更是有融合的感觉。在这里可以看看下面的例子(来自Using JMP 9 and R together)。基本上就是用JSL语句套住全部的R语句,然后绘图啊,统计啊,一键搞定。 rconn = R Connect(); rconn << Submit(“\[library(boot)# Load Boot package library(boot) RStatFctn <- function(x,d) {return(mean(x[d]))} b.basic = matrix(data=NA, nrow=1000, ncol=2) b.normal = matrix(data=NA, nrow=1000, ncol=2) b.percent =matrix(data=NA, nrow=1000, ncol=2) b.bca =matrix(data=NA, nrow=1000, ncol=2) for(i in 1:1000){ rnormdat = rnorm(30,0,1) b <- boot(rnormdat, RStatFctn, R = 1000) b.ci=boot.ci(b, conf =095,type=c(“basic”,”norm”,”perc”,”bca”)) b.basic[i,] = b.ci$basic[,4:5] b.normal[i,] = b.ci$normal[,2:3] b.percent[i,] = b.ci$percent[,4:5] b.bca[i,] = b.ci$bca[,4:5] } ]\”)); b_basic= rconn << Get(b.basic); b_normal = rconn << Get(b.normal); b_percent= rconn << Get(b.percent); b_bca = rconn << Get(b.bca); rconn << Disconnect(); 2, IML Stuido3.2(点击进入软件下载页面)中怎么使用R: 用纯IML代码调用R的例子: /* Comparison of matrix operations in IML and R */ print "---------- SAS/IML Results -----------------"; x = 1:3; /* vector of sequence 1,2,3 */ m = {1 2 3, 4 5 6, 7 8 9}; /* 3x3 matrix */ q = m * t(x); /* matrix multiplication */ print q; print "------------- R Results --------------------"; submit / R; rx <- matrix( 1:3, nrow=1) # vector of sequence 1,2,3 rm <- matrix( 1:9, nrow=3, byrow=TRUE) # 3x3 matrix rq <- rm %*% t(rx) # matrix multiplication [...]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2