R 在sqldf中将数字转换为字符
我试图使用sqldf命令在R中连接数据帧的两列。但是,它将它们视为数字,并将它们相加。我看了关于stackoverflow的类似问题,但它仍然不适合我 以下是我的DF的外观:R 在sqldf中将数字转换为字符,r,casting,character,sqldf,R,Casting,Character,Sqldf,我试图使用sqldf命令在R中连接数据帧的两列。但是,它将它们视为数字,并将它们相加。我看了关于stackoverflow的类似问题,但它仍然不适合我 以下是我的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
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")
有什么想法吗?尽管这在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
)
df如果加载了RH2包,则默认情况下,sqldf将使用,并且我们可以访问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")
谢谢你,努塞尔。它只需少量添加即可工作。事实上,cast不起作用,在您发出命令之前,我应该将这些列转换为字符,如下所示:DF I在我的机器上有选项(stringsAsFactors=FALSE)
作为默认设置,而上述答案可以正常工作。这取决于数据帧的值是整数还是数字。如果是数字,则会得到虚假的.0
s。
# Using sqldf alone
sqldf("SELECT CAST(SP1 as text) FROM df")
# RH2 loaded
sqldf("SELECT TO_CHAR(SP1) FROM df")