如何将类data.frame的列转换为整数,以便它可以与sqldf一起使用

时间:2017-07-14 01:30:07

标签: r dataframe sqldf

我正在使用数据集,我需要一个接一个地运行多个查询以创建一些新变量。问题是在第一次查询之后,创建的新变量是类data.frame。这意味着后续查询不会运行,因为如以下帖子中所述:R- sqldf error raw vs double ...“data.frame的列不能是sqldf工作的类data.frame”

问题是上面的帖子没有告诉我如何解决这个问题。您可以使用以下示例复制我的问题:

set.seed(999)
dt <- data.frame("x"=rnorm(150, 600,195))
sapply(dt, class)
library(sqldf)
dt$x2 <- sqldf("SELECT CASE
WHEN x>999 THEN x / 100
WHEN x>99  THEN x/10
ELSE x
END as x2
FROM dt")
sapply(dt, class)

最后一行的输出显示X2的类是 data.frame 。这意味着当我尝试运行下一个查询时,它将无法正常工作。

dt$x3 <- sqldf("SELECT CASE
WHEN x>999 THEN x - 100
WHEN x>99  THEN x - 10
ELSE x + 10
END as x3
FROM dt")

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:1)

这个怎么样?将[,1]添加到sqldf()

的末尾
set.seed(999)
dt <- data.frame("x"=rnorm(150, 600,195))
sapply(dt, class)
library(sqldf)
dt$x2 <- sqldf("SELECT CASE
WHEN x>999 THEN x / 100
WHEN x>99  THEN x/10
ELSE x
END as x2
FROM dt")[,1]
sapply(dt, class)

sqldf返回一个数据框。子设置拉出列。