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

How to convert a column which of class data.frame to an integer so it can work with sqldf

我正在处理一个数据集,我需要一个接一个地 运行 几个查询,以便创建一些新变量。问题是在第一次查询之后,创建的新变量是 class data.frame。这意味着后续查询不会运行,因为如下所述post: ... "The columns of your data.frame cannot be of class data.frame for sqldf to work"

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

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的class是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")

关于如何解决这个问题有什么建议吗?

这个怎么样?在 sqldf()

末尾添加 [,1]
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 returns 一个数据框。子设置拉出列。