2013-08-19 1 views
0

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

> 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

UPDATE.?:

Какие изменения мне нужно сделать для кода ниже? ????

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 

ответ

2

Обновление не имеет пункт from (см update syntax on SQLite site), а также увидеть sqldf FAQ #8 для обычно сделаны ошибки обновления таблицы в SQLite, но затем не возвращает таблицу R.

+0

ваше предложение помогло .. .any идея о моем обновлении/новом вопросе? – user2543622

+0

В sqldf вы делаете все сразу, а не подряд за строкой. Если вопрос в основном заключается в том, как вставлять переменные, см. Пример 5 на домашней странице sqldf. https://code.google.com/p/sqldf/#Example_5._Insert_Variables –

+0

мой вопрос немного другой ... Я пишу курсор, поскольку хочу перебирать свои данные. Каждая строка моих данных имеет 2 столбца - дату начала и окончания. я начну с 1-1-2008 и буду считать записи в каком-то другом столбце, если в моей дате находится столбец начала и окончания даты. Я пишу курсор, поскольку писать курсор довольно просто, и он обеспечивает быстрый выход. Мой код курсора не работал в R. Есть ли лучший способ добиться того же в R и sqldf? спасибо – user2543622