在sqldf中将数字转换为字符

时间:2015-07-27 15:54:10

标签: r casting character sqldf

我正在尝试使用sqldf命令连接R中数据帧的2列。但是,它将它们视为数字并将它们相加。我在stackoverflow上查看solution类似的问题,但它仍然不适用于我。

这就是我的DF的样子:

SP1  SP2
521  526
521  523

我想要的是:

SP
521-526
521-523

我尝试了以下内容:

sqldf("select  SP1 + '-' + SP2 as SP from DF")

我也尝试过:

DF2 <- transform(DF, SP1 = as.character(SP1), SP2 = as.character(SP2)))
sqldf("select  SP1 + '-' + SP2 as SP from DF2")

在这两种情况下,我得到的结果是

SP
1047
1044

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

虽然这可以在SQL Server中使用,但您必须使用||而不是+,因为sqldf最有可能使用SQLite后端:

R> sqldf::sqldf(
    "SELECT SP1 || '-' || SP2 AS SP
     FROM df;"
  )
       SP
1 521-526
2 521-523

数据:

df <- read.table(
  text = "SP1  SP2
  521  526
  521  523",
  header = TRUE
)

答案 1 :(得分:0)

If the RH2 package is loaded sqldf will use H2 by default, and we can access other functions not available in SQLite:

In this example we can use CONCAT:

library(RH2)
library(sqldf
sqldf("SELECT CONCAT(SP1, '-' , SP2) AS SP FROM df")

Output:

      SP
1 521-526
2 521-523

If we need to convert columns to character:

# Using sqldf alone   
sqldf("SELECT CAST(SP1 as text) FROM df")
# RH2 loaded
sqldf("SELECT TO_CHAR(SP1) FROM df")