在R语言中使用SQL语句

421 篇文章 15 订阅

在R的RODBC包中可以使用sqlQuery()语句使用sql语言,略懂数据库的都知道SQL语言在检索数据时的好处,但是有时检索语句中的一些参数来自于R的变量,这时的处理可以采取的处理方法是,用paste()连接字符串,并将SQL语句定议为字符串作为sqlQuery的参数:

例子如下:

library(RODBC); # load RODBC pakage to connect DBMS
data<-odbcConnectExcel("FU.xls");
contract=c("'IF1005'","'IF1006'");
for(i in 2:1)
{
  dd<-sqlQuery(data,paste("select [Futures$].Date, [Index$].ClosePrice as Iprice, [Futures$].ClosePrice as Fclose,([Index$].ClosePrice - [Futures$].ClosePrice) as Basis from [Futures$],[Index$] where [Futures$].Date=[Index$].Date and [Futures$].Code=",contract[i],"order by [Futures$].Date",seq=''));

}

......

注意由于paste()函数在连接字符时,会自上加上空格或者你定义的中间连接字符,所以为了方便,一般将参数先定义好。如"'IF1005'"定义了一个字符串,这个字符串是由 ' 开头以 ' 结束的这样正好对应了SQL语句中的字符常量的表达方式。
注意,如果使用64位的R, data<-odbcConnectExcel("FU.xls"); 应该改为data<-odbcConnectExcel2007("FU.xls"); 

方法二:

 

创建一个 leadership的数据集:

> manager<-c(1,2,3,4,5) > date<-c("10/24/08","10/28/08","10/01/08","10/12/08","05/01/09") > country<-c("US","US","UK","UK","UK") > sex<-c("M","F","F","M","F") > gender<-c(32,45,25,39,99) > q1<-c(5,3,3,3,2) > q2<-c(4,5,5,3,2) > q3<-c(5,2,5,4,1) > q4<-c(5,5,5,NA,2) > q5<-c(5,5,2,NA,1) > leadership<-data.frame(manager,date,country,sex,gender,q1,q2,q3,q4,q5,stringAsFactors=FALSE) 

使用SQL语言调用:

> library(sqldf) > newdata<-sqldf("select * from leadership",row.names=TRUE) > newmydata<-sqldf("select * from leadership where sex='F'",row.names=TRUE) 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值