我正在尝试使用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
有什么想法吗?
答案 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")