我正在使用数据集,我需要一个接一个地运行多个查询以创建一些新变量。问题是在第一次查询之后,创建的新变量是类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")
有关如何解决此问题的任何建议吗?
答案 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
返回一个数据框。子设置拉出列。