Таблица обновления пакета sqldf языка R не работает

я экспортировал некоторые данные из CSV-файла в R. Я использую пакет sqldf для обновления данных. Мой запрос ниже выполняется. я могу предоставить свой CSV-файл, но я не знаю, как сюда прикреплять файлы :(

> sqldf("select * from
+ (
+  
+ select Disposition as dummy_disposition, case Disposition
+ when 'Disposition' then  'UNKNOWN'
+ when 'Donate' then  'EOL'
+ when 'Resale' then  'EOL'
+ when 'Harvest' then  'EOL'
+ when 'IntelSpinOff' then  'EOL'
+ when 'Scrap' then  'EOL'
+ when 'BufferFeedForward' then   'ACTIVE'
+ when 'FB' then  'UNKNOWN'
+ when 'Unknown' then  'UNKOWN'
+ when 'HarvestResale' then  'EOL'
+ when 'ReturnToSupplier' then  'EOL'
+ when 'IcapResale' then  'EOL'
+ when 'NonEmsManaged' then  'EOL'
+ when 'BufferEOL' then  'EOL'
+ when 'ResaleScrap' then  'EOL'
+ when 'ST' then  'UNKNOWN'
+ when 'AS' then  'UNKNOWN'
+ else null end as new_status,
+  
+ *  from a where FloorStatus is null and  disposition is not null
+  
+  
+ )  as table1
+   where new_status is null")
 [1] dummy_disposition new_status        Ueid              Date              EndDate          
 [6] Site              CFD               Type              ScheduleId        EventType        
[11] FloorStatus       EntityCode        Ceid              Process           Supplier         
[16] FA                MfgType           Disposition       Comments          extra1           
[21] extra2            extra3           
<0 rows> (or 0-length row.names)

но когда я запускаю запрос ниже, он не запускается :( Это интересно, потому что, кроме части таблицы обновления, остальная часть запроса является частью вышеуказанного запроса.

> sqldf("update a set FloorStatus = case Disposition
+ when 'Disposition' then  'UNKNOWN'
+ when 'Donate' then  'EOL'
+ when 'Resale' then  'EOL'
+ when 'Harvest' then  'EOL'
+ when 'IntelSpinOff' then  'EOL'
+ when 'Scrap' then  'EOL'
+ when 'BufferFeedForward' then   'ACTIVE'
+ when 'FB' then  'UNKNOWN'
+ when 'Unknown' then  'UNKNOWN'
+ when 'HarvestResale' then  'EOL'
+ when 'ReturnToSupplier' then  'EOL'
+ when 'IcapResale' then  'EOL'
+ when 'NonEmsManaged' then  'EOL'
+ when 'BufferEOL' then  'EOL'
+ when 'ResaleScrap' then  'EOL'
+ when 'ST' then  'UNKNOWN'
+ when 'AS' then  'UNKNOWN'
+ else null end
+    from a where FloorStatus is null and  disposition is not null")
Error in sqliteExecStatement(con, statement, bind.data) : 
  RS-DBI driver: (error in statement: near "from": syntax error)

что не так с моей командой обновления таблицы? когда я запускаю свой код в студии разработки sql, он работает нормально... но я бы предпочел, чтобы код работал в R

ОБНОВИТЬ:

какие изменения мне нужно внести в приведенный ниже код????

declare @outputs table 
([day] datetime,
floorstatus varchar,  
 quantity int)

declare @Date datetime;


DECLARE dates_cursor CURSOR FOR
SELECT clndr_dt from epsd.dbo.t_calendar
              where clndr_dt between '2008-01-01' and '2013-08-13'
              order by clndr_dt
OPEN dates_cursor
FETCH NEXT from dates_cursor INTO @Date

WHILE @@FETCH_STATUS = 0
    BEGIN

insert @outputs
       select @Date as [Day], floorstatus, count(floorstatus) as quantity from Graph_data
       where @Date between [Date] and EndDate
       group by floorstatus

FETCH NEXT from dates_cursor INTO @Date
END
CLOSE dates_cursor
DEALLOCATE dates_cursor

select * from @outputs

person user2543622    schedule 19.08.2013    source источник


Ответы (1)


В обновлении нет предложения from (см. синтаксис обновления на сайте SQLite), а также см. sqldf FAQ #8 для распространенной ошибки обновления таблицы в SQLite, но не возврата таблицы в R.

person G. Grothendieck    schedule 19.08.2013
comment
ваше предложение помогло... есть идеи по поводу моего обновления/нового вопроса? - person user2543622; 19.08.2013
comment
В sqldf вы делаете это сразу, а не построчно. Если вопрос в основном заключается в том, как вставлять переменные, см. пример 5 на домашней странице sqldf. code.google.com/p/sqldf/#Example_5._Insert_Variables - person G. Grothendieck; 19.08.2013
comment
мой вопрос немного другой... я пишу курсор, так как хочу перебирать свои данные. Каждая строка моих данных имеет 2 столбца - дату начала и окончания. я начну с 1-1-2008 и буду считать записи в каком-то другом столбце, если моя дата находится в столбце даты начала и окончания. Я пишу курсор, так как написать курсор довольно просто, и он обеспечивает быстрый вывод. Мой код курсора не работал в R. Есть ли лучший способ добиться того же в R и sqldf? спасибо - person user2543622; 20.08.2013
comment
Вы можете использовать предложение where или limit, чтобы захватить часть вывода или, если размер не является проблемой, просто получить все сразу. В качестве альтернативы используйте пакет RSQLite, который поддерживает курсоры. - person G. Grothendieck; 20.08.2013