आर

2010-08-12 5 views
5

में डेटा को पुन: स्थापित करें मैं आर में मूल बातें से आगे निकलना शुरू कर रहा हूं और ऐसे बिंदु पर आया हूं जहां मुझे कुछ मदद चाहिए। मैं कुछ डेटा पुन: व्यवस्थित करना चाहता हूं।आर

ID Sex Res Contact 
1 M MA ABR 
1 M MA CON 
1 M MA WWF 
2 F FL WIT 
2 F FL CON 
3 X GA XYZ 

मैं डेटा की तरह लग रहे हैं:: यहाँ क्या एक नमूना dataframe की तरह लग सकता है

ID SEX Res ABR CON WWF WIT XYZ 
1 M MA 1 1 1 0 0 
2 F FL 0 1 0 1 0 
3 X GA 0 0 0 0 1 

मेरे विकल्प क्या हैं? मैं आर में यह कैसे करूँगा?

संक्षेप में, मैं CONT कॉलम के मानों को रखने और पुनर्गठित डेटा फ्रेम में कॉलम नामों के रूप में उपयोग करने के लिए देख रहा हूं। मैं कॉलम स्थिरांक का एक चर सेट सेट करना चाहता हूं (उपरोक्त उदाहरण में, मैंने आईडी, लिंग और रेज़ निरंतर आयोजित किया)।

साथ ही, पुनर्गठित डेटा में मूल्यों को नियंत्रित करना संभव है? मैं डेटा को बाइनरी के रूप में रखना चाहता हूं। मैं कुछ डेटा चाहता हूं कि मान प्रत्येक आईडी के लिए प्रत्येक संपर्क मान मौजूद होने की गणना हो।

उत्तर

12

reshape पैकेज वह है जो आप चाहते हैं। यहां दस्तावेज़ीकरण: http://had.co.nz/reshape/। नहीं मेरे अपने सींग हार्न करने के लिए, लेकिन मैं यह भी reshape 'पर कुछ नोट ऊपर लिखा है रों यहाँ का उपयोग करें: http://www.ling.upenn.edu/~joseff/rstudy/summer2010_reshape.html

उद्देश्य के लिए, इस कोड काम करना चाहिए

library(reshape) 
data$value <- 1 
cast(data, ID + Sex + Res ~ Contact, fun = "length") 
+0

मैं एक लंबे समय के लिए R का उपयोग किया गया है और मैं कभी नहीं जानता था कि आप डेटा $ मूल्य कर सकता है <- 1 डेटा $ मूल्य के बजाय <- प्रतिनिधि (1, Nrow (डेटा))। विश्वास नहीं कर सकता मैंने कभी कोशिश नहीं की - क्या वह हमेशा काम करता था? –

+0

@ डैनियल आपको 'डेटा $ वैरिएबल <- 1 भी आज़माएं; डेटा $ वैरिएबल [डेटा $ समूह == "ए"] <- 2' – JoFrhwld

+0

मुझे पता था कि हैडली का रीशेप पैकेज शायद जवाब था, लेकिन मुझे इसके चारों ओर अपना सिर मुश्किल हो रहा था। आपके कोड में, 1 के लिए असाइनमेंट के साथ डेटा $ मूल्य क्या करता है? – Btibert3

2

model.matrix अच्छा काम करता है (यह पूछा गया था हाल ही में, और gappy had this good answer):

> model.matrix(~ factor(d$Contact) -1) 
    factor(d$Contact)ABR factor(d$Contact)CON factor(d$Contact)WIT factor(d$Contact)WWF factor(d$Contact)XYZ 
1     1     0     0     0     0 
2     0     1     0     0     0 
3     0     0     0     1     0 
4     0     0     1     0     0 
5     0     1     0     0     0 
6     0     0     0     0     1 
attr(,"assign") 
[1] 1 1 1 1 1 
attr(,"contrasts") 
attr(,"contrasts")$`factor(d$Contact)` 
[1] "contr.treatment" 
+0

ईर्क! सवाल गलत समझा। आप मेरे उत्तर का उपयोग कर सकते हैं और फिर 'tapply' का उपयोग कर सकते हैं, लेकिन JoFrhwld का जवाब आसान है। – Vince