2012-06-29 17 views
15

डेटाटेबल पैकेज गति के मामले में बहुत उपयोगी है। लेकिन मुझे वास्तव में एक रैखिक प्रतिगमन से आउटपुट का उपयोग करने में परेशानी हो रही है। क्या डेटाटेबल आउटपुट को प्लीयर पैकेज से उतना सुंदर/उपयोगी होने का कोई आसान तरीका है? नीचे एक उदाहरण है। धन्यवाद!डेटाटेबल बनाम प्लीयर रिग्रेशन आउटपुट

library('data.table'); 
library('plyr'); 

REG <- data.table(ID=c(rep('Frank',5),rep('Tony',5),rep('Ed',5)), y=rnorm(15), x=rnorm(15), z=rnorm(15)); 
REG; 

ddply(REG, .(ID), function(x) coef(lm(y ~ x + z, data=x))); 

REG[, coef(lm(y ~ x + z)), by=ID]; 

data.table गुणांक अनुमान जबकि plyr/ddply गुणांक अनुमान एकल स्तंभ में उत्पादन कर रहे हैं और अच्छी तरह से कई लेबल वाले स्तंभों में उत्पादन कर रहे हैं।

मुझे पता है कि मैं डेटाटेबल के साथ तीन बार प्रतिगमन चला सकता हूं लेकिन यह वास्तव में अक्षम है। मुझसे गलती भी हो सकती है।

REG[, Intercept=coef(lm(y ~ x + z))[1], 
     x  =coef(lm(y ~ x + z))[2], 
     z  =coef(lm(y ~ x + z))[3], by=ID]; 

उत्तर

13

इस प्रयास करें:

> REG[, as.list(coef(lm(y ~ x + z))), by=ID]; 
     ID (Intercept)   x   z 
[1,] Frank -0.2928611 0.07215896 1.835106 
[2,] Tony 0.9120795 -1.11153056 2.041260 
[3,] Ed 1.0498359 5.77131778 -1.253741 

मैं सता लग रहा है कि इस सवाल का एक सप्ताह पहले की तुलना में कम से पूछा गया है, लेकिन मुझे नहीं लगता कि मैं इस दृष्टिकोण पर पहुंचे जब मैं इसे और मैंने कोशिश की इस कॉम्पैक्ट के किसी भी उत्तर से याद नहीं है।

ओह, वहां यह है .. आर-सहायता पर। यदि वह चाहता है तो मैथ्यू इस पर सहीता पर टिप्पणी कर सकता है। मुझे लगता है कि संदेश यह है कि सूची लौटने वाले कार्यों में आयाम नहीं होंगे। रोचक बात यह थी कि list(coef(lm(...)) का उपयोग करने के तरीके में सफल नहीं हुआ था।

+1

वहां [यह] था (http://stackoverflow.com/questions/11233183/grouping-in-data-table-how-to-get-more-than-1-column-of-results/11233262#11233262) कल से (esp। मेरे उत्तर पर दूसरी टिप्पणी देखें) लेकिन यह अच्छा है कि यह अधिक प्रमुख रूप से प्रदर्शित हो। –

+1

और ध्यान दें कि 'सूची() 'उत्तर नहीं है। –

+1

यही कारण है कि मैंने टिप्पणी का संदर्भ दिया;) (बस आपसे यह दिखाने की कोशिश कर रहा है कि आपको उस घबराहट महसूस हो सकती है।) –