मेरे पास कुछ बड़े डेटा-सेट हैं जिन्हें मैं गठबंधन करने की कोशिश कर रहा हूं। मैंने एक खिलौना उदाहरण बनाया है जो मैं करना चाहता हूं।नमूनाकरण द्वारा डेटा.table में शामिल हों
require(data.table)
set.seed(151)
x <- data.table(a=1:100000)
y <- data.table(b=letters[1:20],c=sample(LETTERS[1:4]))
proportion <- data.table(expand.grid(a=1:100000,c=LETTERS[1:4]))
proportion[,prop:=rgamma(4,shape = 1),by=a]
proportion[,prop:=prop/sum(prop),by=a]
तीन तालिकाओं हैं x
, y
, और proportion
: मैं तीन टेबल है। x
में प्रत्येक तत्व के लिए मैं y
तालिका से proportion
की संभावनाओं का उपयोग करके संपूर्ण तालिका से नमूना देना चाहता हूं और उन्हें एक और तालिका में जोड़ना चाहता हूं। विधि है कि मैं के साथ आया है:
temp <- setkey(setkey(x[,c(k=1,.SD)],k)[y[,c(k=1,.SD)],allow.cartesian=TRUE][,k:=NULL],a,c)
temp <- temp[setkey(proportion,a,c)][,prop:=prop/.N,by=.(a,c)] # Uniform distribution within the same 'c' column group
chosen_pairs <- temp[,.SD[sample(.N,5,replace=FALSE,prob = prop)],by=a]
लेकिन के रूप में यह पहले और उसके बाद नमूना पार मिलती है दो तालिका से इस विधि स्मृति गहन और धीमी है। क्या इस कार्य को एक कुशल (स्मृति और समय) तरीके से करने का कोई तरीका है?
आप अपने समाधान की दूसरी पंक्ति में संभावनाओं का पुनर्मूल्यांकन क्यों कर रहे हैं? – minem
@ मार्टिविस्मिग्लिनिक्स मैं संभावनाओं को सामान्यीकृत कर रहा हूं क्योंकि किसी दिए गए '(ए, सी)' जोड़ी के लिए कई 'बी' –
लुकअप' ईएसीआईआई 'हो सकता है, जब क्रॉस-इनिंग करने से आप प्रत्येक में शामिल हिस्से से निपट सकते हैं मेम में पूर्ण शामिल होने के बिना ऑपरेशन, ऑपरेशन। – Shape