I need to do a loop over sqldf statements and for that I need to call the loop variable inside the sqldf code:
My table "data", might be:
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)
then I format loaddate as a date:
data$loaddate<-as.Date(as.character(data$loaddate), format='%Y-%m-%d')
Let's say I have a vector "loaddates":
loaddates<- unique(sort(data$loaddate))
And I need to run the following code for each 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
") }
But I get the followng error:
Error in sqliteSendQuery(con, statement, bind.data) : error in statement: no such column: i
Is there a way to keep the variable value and use it inside the loop?
Thanks.
EDITION:
I tried:
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))
But I got:
> [1] loaddate DaysRange DaysRangeNext clientes <0 rows> > (or 0-length row.names)