Мне нужно выполнить цикл по операторам 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))
И мне нужно запустить следующий код для каждой 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)