उद्देश्य डेटा फ्रेम में एक कारक/स्ट्रिंग चर के लिए संकेतक बनाना है। उस डेटाफ्रेम में> 2 मिमी पंक्तियां हैं, और विंडोज़ पर आर चल रही हैं, मेरे पास pparr का उपयोग करने का विकल्प नहीं है .parallel = T। तो मैं प्लीयर और reshape2 के साथ "विभाजन और जीत" मार्ग ले रहा हूँ।बड़े डेटा फ्रेम में संकेतक उत्पन्न करना
स्मृति से बाहर पिघल और कलाकारों रन चल रहा है, और
ddply(idata.frame(items) , c("ID") , function(x){
( colSums(model.matrix(~ x$element - 1)) > 0 )
} , .progress="text")
या
ddply(idata.frame(items) , c("ID") , function(x){
( elements %in% x$element )
} , .progress="text")
का उपयोग कर कुछ समय ले करता है। सबसे तेज़ दृष्टिकोण नीचे कॉल करने के लिए कॉल है। क्या आप इसे गति देने का एक तरीका देखते हैं? % कथन में% model.matrix कॉल से तेज़ी से चलता है। धन्यवाद।
set.seed(123)
dd <- data.frame(
id = sample(1:5, size=10 , replace=T) ,
prd = letters[sample(1:5, size=10 , replace=T)]
)
prds <- unique(dd$prd)
tapply(dd$prd , dd$id , function(x) prds %in% x)
मैं आपके उदाहरण से उलझन में हूं। आप 'dd $ prd' को' dd $ id' से विभाजित कर रहे हैं, फिर पूछें कि प्रत्येक आईडी में 'prds' के कौन से मान दर्शाए जाते हैं - लेकिन' prds' को क्रमबद्ध नहीं किया जाता है (!) क्या आप 'prds <- sort (अद्वितीय (डीडी $ पीआरडी)) '(जो मुझे और अधिक समझ में आता है ...)? –
जब तक पीआरडी में उपलब्ध तत्वों के अनुरूप संकेतक (लॉजिकल) आईडी में एक ही ऑर्डर करते हैं, इससे कोई फ़र्क नहीं पड़ता कि उन्हें कैसे क्रमबद्ध किया जाता है। –
ठीक है। मेरे अन्य प्रश्न को नीचे दिए गए मेरे उत्तर में देखें ... –