आर

2013-02-21 9 views
5

में द्विआधारी मानों 0/1 में 2 स्तरों के साथ एक कारक को परिवर्तित करना मेरे पास एक चर है, जिसे gender कहा जाता है, जिसमें बाइनरी स्पष्ट मूल्य "मादा"/"पुरुष" होता है। मैं इसके प्रकार को पूर्णांक 0/1 में बदलना चाहता हूं ताकि मैं इसे एक रिग्रेशन विश्लेषण में उपयोग कर सकूं। यानी मैं चाहता हूँ मूल्यों "महिला" और "पुरुष" 1 करने के लिए मैप किया और 0.आर

> str(gender) 
gender : Factor w/ 2 levels "female","male": 1 1 1 0 0 0 0 1 1 0 ... 
> gender[1] 
[1] female 

मैं लिंग वैरिएबल प्रकार परिवर्तित करने के लिए इतना है कि मैं पूर्णांक मान 1 जब मैं एक तत्व क्वेरी मिल

पसंद है, यानी होगा
> gender[1] 
[1] 1 
+0

SO में आपका स्वागत है! शायद यह बेहतर प्रदर्शन होना चाहिए कि आपने क्या प्रयास किया है। – agstudy

+3

'लिंग <- ifelse (लिंग ==" महिला ", 1,0) के बारे में क्या? – r2d2oid

उत्तर

9

एक कारक में कनवर्ट करें और आर को बाकी की देखभाल करें। आप जब आर

+4

+1 वास्तविक समस्या को हल करने के लिए कहीं बेहतर है, सटीक समस्या नहीं! – mnel

13

उपयोग करने के लिए @ Dason का जवाब एक अतिरिक्त के रूप में स्पष्ट रूप से डमी चर बनाने का ख्याल रखना कभी नहीं होना चाहिए, ध्यान दें कि ...

test <- c("male","female") 

as.factor(test) 
#[1] male female 
#Levels: female male 

... female संदर्भ समूह के रूप वापस आ जाएगी (1) और male तुलना समूह (2) के रूप में,

यह दूसरी तरह घुमाने के लिए, तुम क्या करने की आवश्यकता होगी ...

factor(test,levels=c("male","female")) 
#[1] male female 
#Levels: male female 

@marius नोटों के रूप में, उसी एनजी contrasts आपको बताएंगे कि कैसे यह प्रतिगमन मॉडल में काम करेंगे:

contrasts(as.factor(test)) 
#  male 
#female 0 
#male  1 

contrasts(factor(test,levels=c("male","female"))) 
#  female 
#male  0 
#female  1 
+2

या, यह भी स्पष्ट रूप से देखने के लिए कि रिग्रेशन मॉडल में स्तरों का इलाज कैसे किया जाएगा, 'विरोधाभास (कारक (परीक्षण)) ' – Marius

6

आप असली के लिए यह कर रहे हैं, तो आप पूरी तरह से पालन करना चाहिए @ Dason की सलाह। मुझे लगता है कि आप (this question करने के लिए धन्यवाद के साथ) एक कक्षा को पढ़ा रहे हैं और सूचक चर प्रदर्शित करने के लिए चाहते हैं ग्रहण करने के लिए जा रहा हूँ:

dat <- data.frame(gender=sample(c("male", "female"), 10, replace=TRUE)) 

model.matrix(~gender, data=dat) 

    (Intercept) gendermale 
1   1   1 
2   1   0 
3   1   1 
4   1   0 
5   1   1 
6   1   1 
7   1   1 
8   1   0 
9   1   0 
10   1   1 
attr(,"assign") 
[1] 0 1 
attr(,"contrasts") 
attr(,"contrasts")$gender 
[1] "contr.treatment" 

आप अवरोधन नहीं करना चाहते हैं, model.matrix(~gender -1 , data=dat) बजाय का उपयोग करें।