【发布时间】:2015-03-11 13:56:13
【问题描述】:
我需要对 sqldf 语句进行循环,为此我需要在 sqldf 代码中调用循环变量:
我的表“数据”,可能是:
data <- read.table(text ="
loaddate DaysRange DaysRangeNext
1 2014-03-16 30 30
2 2014-03-16 0 0
3 2014-03-16 0 0
4 2014-03-16 60 NA
5 2014-04-16 30 30
6 2014-04-16 0 30
"
,header = TRUE)
然后我将 loaddate 格式化为日期:
data$loaddate<-as.Date(as.character(data$loaddate), format='%Y-%m-%d')
假设我有一个向量“loaddates”:
loaddates<- unique(sort(data$loaddate))
我需要为每个加载日期运行以下代码:
for (i in loaddates) {
sqldf("
SELECT D.LoadDate,D.DaysRange, D.DaysRangeNext,
COUNT(*) AS clientes
FROM data AS D
WHERE D.loaddate = i
GROUP BY D.LoadDate,D.DaysRange, D.DaysRangeNext
ORDER BY D.DaysRange, D.DaysRangeNext
") }
但我收到以下错误:
sqliteSendQuery(con, statement, bind.data) 中的错误:错误 声明:没有这样的列:i
有没有办法保留变量值并在循环中使用它?
谢谢。
版本:
我试过了:
sqldf(
strwrap(sprintf("
SELECT D.LoadDate,D.DaysRange, D.DaysRangeNext,
COUNT(*) AS clientes
FROM data AS D
WHERE D.LoadDate = '%s'
GROUP BY D.LoadDate,D.DaysRange, D.DaysRangeNext
ORDER BY D.DaysRange, D.DaysRangeNext
",i),simplify=TRUE,width=1000000))
但我得到了:
> [1] loaddate DaysRange DaysRangeNext clientes <0 rows> > (or 0-length row.names)
【问题讨论】: