मेरे पास दो टेबल हैं जो मैं निम्नलिखित SQL के बराबर एक साथ जुड़ना चाहूंगा, जहां मैं कई स्थितियों में शामिल हूं, न कि समानता।आर डेटा.Table कंडीशनल पर शामिल हों
require(sqldf)
require(data.table)
dt <- data.table(num=c(1, 2, 3, 4, 5, 6),
char=c('A', 'A', 'A', 'B', 'B', 'B'),
bool=c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE))
dt_two <- data.table(
num =c(6, 1, 5, 2, 4, 3),
char=c('A', 'A', 'A', 'B', 'B', 'B'),
bool=c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE))
dt_out_sql <- sqldf('
select dtone.num, dtone.char, dtone.bool, SUM(dttwo.num) as SUM,
MIN(dttwo.num) as MIN
from dt as dtone INNER join dt_two as dttwo on
(dtone.char = dttwo.char) and
(dtone.num >= dttwo.num OR dtone.bool)
GROUP BY dtone.num, dtone.char, dtone.bool')
मैं प्रदर्शन और लचीलापन दोनों कारणों के लिए SQL समाधान से बचना चाहता हूं। एक क्रॉस में शामिल होने के लिए भी जाता है, और उसके बाद फ़िल्टरिंग/एग्रीगेटिंग - यह एक इंटरमीडिएट टेबल बनायेगा जिसमें फ़िल्टर करने के लिए मेरे लिए बहुत सारे अनावश्यक रिकॉर्ड होंगे।
बहुत बहुत धन्यवाद!
अद्यतन - मेरा प्रारंभिक उदाहरण जल्दबाजी में किया गया था। मेरी वास्तविक समस्या में, मैं स्वयं में शामिल नहीं हो रहा हूं।
मैंने प्रत्येक को बेंचमार्क किया संभावित विकल्पों में से, और यह वास्तव में सबसे तेज़ हो गया। इस मामले में, मैं बदसूरत के साथ रह सकता हूँ। :) – Netbrian