在R语言中使用SQL语句

来源:互联网 发布:怎样安装网络打印机 编辑:程序博客网 时间:2024/06/05 21:09

在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) 

 

0 0