Sto tentando di convertire il codice SQL in codice R. Tuttavia, i dati sono circa 35 milioni di record con 200 colonne ciascuno. Quindi la scelta migliore che ho trovato è il pacchetto data.table.Conversione del codice `caso quando ...` di SQL utilizzando il pacchetto data.table in R
Ecco il problema. Nel codice SQL sono in grado di eseguire un'operazione di questo tipo,
select order_date,sum(case when item in ("D","C","B") then col4 end)as col1
sum(case when item not in ("Z","X","Y") then col4 end) as col2
from datatable
where col3 <25
group by order_date;
Qual query precedente mi permette di gruppo per ogni data. Non riesco a duplicarlo in data.table. I miei tentativi sono i seguenti.
grp1<- c("D","C","B")
grp2<- c("Z","X","Y")
d1 <- dat[item %in% grp1,.(col1 = sum(col4,na.rm = TRUE),by = Order_Date]
d2 <- dat[item %in% grp2,.(col2 = sum(col4,na.rm = TRUE),by = Order_Date]
d3 <- data.table(d1,d2)
Ora, dal momento che subsets
inizialmente il mio raggruppamento è diverso sia d1
e d2
So che questa non è una tua domanda, ma sai che esistono pacchetti R che sono in grado di eseguire codice SQL (dplyr e altri)? – maj
Non capisco quando dici, non la mia domanda? Desidero implementare tutto ciò utilizzando il pacchetto data.table. – Shoaibkhanz
Sono interessante nel timing delle soluzioni SQL e R sui tuoi dati (35Mx200), potresti controllarlo e pubblicarlo? – jangorecki