在sqldf中将数字转换为字符
converting numeric to character in sqldf
我正在尝试使用 sqldf 命令连接 R 中数据框的 2 列。但是,它将它们视为数字并将它们相加。我查看了关于 Whosebug 的类似问题的 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
有什么想法吗?
尽管这在 SQL 服务器中有效,但您必须使用 ||
而不是 +
,因为 sqldf
很可能使用 SQL项目后端:
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
)
如果加载 RH2 包,sqldf 将使用 H2 by default, and we can access other functions 在 SQLite 中不可用:
在这个例子中我们可以使用CONCAT
:
library(RH2)
library(sqldf
sqldf("SELECT CONCAT(SP1, '-' , SP2) AS SP FROM df")
输出:
SP
1 521-526
2 521-523
如果我们需要将列转换为字符:
# Using sqldf alone
sqldf("SELECT CAST(SP1 as text) FROM df")
# RH2 loaded
sqldf("SELECT TO_CHAR(SP1) FROM df")
我正在尝试使用 sqldf 命令连接 R 中数据框的 2 列。但是,它将它们视为数字并将它们相加。我查看了关于 Whosebug 的类似问题的 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
有什么想法吗?
尽管这在 SQL 服务器中有效,但您必须使用 ||
而不是 +
,因为 sqldf
很可能使用 SQL项目后端:
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
)
如果加载 RH2 包,sqldf 将使用 H2 by default, and we can access other functions 在 SQLite 中不可用:
在这个例子中我们可以使用CONCAT
:
library(RH2)
library(sqldf
sqldf("SELECT CONCAT(SP1, '-' , SP2) AS SP FROM df")
输出:
SP
1 521-526
2 521-523
如果我们需要将列转换为字符:
# Using sqldf alone
sqldf("SELECT CAST(SP1 as text) FROM df")
# RH2 loaded
sqldf("SELECT TO_CHAR(SP1) FROM df")