>str(T$gender)
 Factor w/ 2 levels "0","1": 2 1 1 1 2 2 1 2 2 1 ...

डेटा टी में मूल्य लिंग इस तरह दिखता है। गुणनखंड स्तर और गुणनखंड मान के बीच कोई मेल नहीं है। इसलिए मैं सिर्फ 2 से 1 और 1 से 0 के मान को बदलना चाहता हूं।

मेरा मतलब है कि मैं चाहता हूं कि आर प्रोग्रामिंग इसे वापस कर दे। कारक w/2 स्तर "0", "1" : 1 0 0 0 1 1 0 1 1 0 ....)

मैंने इस तरह से कोशिश की।

T<-transform(T,gender=ifelse(gender==1,0,1))
str(T$gender)
T$gender<-as.factor(T$gender)

लेकिन यह मूल्य नहीं बदलता है। क्या कोई मेरी मदद कर सकता है?

r
0
hyejuryu 27 नवम्बर 2019, 08:53
3
गुणनखंडों को आंतरिक रूप से पूर्णांकों के रूप में कोडित किया जाता है, जो 1 से शुरू होकर स्तरों की संख्या तक होता है। पहला स्तर 1 है, दूसरा स्तर 2, आदि। लेबल इंगित करते हैं कि प्रत्येक स्तर कैसे मुद्रित होता है, इसलिए आपके मामले में पहले स्तर को "0" लेबल किया जाता है, आपके दूसरे स्तर को "1" लेबल किया जाता है। आप जो मांग रहे हैं वह एक मूलभूत परिवर्तन है कि कैसे कारकों को कोडित और संग्रहीत किया जाता है --- इसके लिए R के टुकड़ों को फिर से लिखना होगा, भाषा को फिर से लिखना होगा, और यह संभवतः कई, कई अन्य कार्यों और पैकेजों को तोड़ देगा।
 – 
Gregor Thomas
27 नवम्बर 2019, 09:10
2
तो, सवाल यह है कि क्यों आप ऐसा करना चाहते हैं? आपको क्या समस्या है कि आपको लगता है कि यह समाधान है? क्या आप इसे केवल एक पूर्णांक में परिवर्तित कर सकते हैं? क्या धर्मांतरण बिल्कुल जरूरी है? ध्यान दें कि यदि आप print(T$gender) या केवल T$gender को देखते हैं, तो यह आपके अनुरोध के अनुसार प्रिंट हो जाएगा।
 – 
Gregor Thomas
27 नवम्बर 2019, 09:13
2
साथ ही, T को वैरिएबल नाम के रूप में इस्तेमाल करने से बचें - TRUE के लिए T सेव करें।
 – 
Gregor Thomas
27 नवम्बर 2019, 09:14
मैं डेटाफ्रेम टी में सभी मानों को 0-1 में बदलना चाहता हूं। इसलिए यह लॉजिस्टिक रिग्रेशन के साथ काम कर सकता है। मुझे उम्मीद है कि परिणाम इस तरह सामने आएगा। (कारक w/2 स्तर "0", "1": 1 0 0 0 1 1 0 1 1 0 ....)। लेकिन मैं नहीं कर सकता, यहां तक ​​कि मैंने उन टिप्पणियों की भी कोशिश की जो अन्य लोग अनुशंसा करते हैं।
 – 
hyejuryu
27 नवम्बर 2019, 09:47
3
हां, मैं समझता हूं कि आपका अल्पकालिक लक्ष्य "फैक्टर w/2 लेवल "0",,"1" : 1 0 0 0 1 1 0 1 1 0" है। कृपया मेरी पहली टिप्पणी को ध्यान से पढ़ें: यह लक्ष्य अनिवार्य रूप से असंभव है। ऐसा करने के लिए आपको R भाषा को फिर से लिखना होगा। लॉजिस्टिक रिग्रेशन (और ओएलएस रिग्रेशन, और आर में किसी भी अन्य मॉडलिंग फ़ंक्शन) जानता है कि factors से कैसे निपटना है क्योंकि वे वर्तमान में कार्यान्वित हैं - glm फ़ंक्शन यह डमी कोड कारकों को कॉलम के रूप में मान 0 और 1 स्वचालित रूप से। आप अपने वर्तमान डेटा पर ठीक लॉजिस्टिक प्रतिगमन का उपयोग कर सकते हैं, इसलिए आपका लक्ष्य व्यर्थ है।
 – 
Gregor Thomas
27 नवम्बर 2019, 09:53

2 जवाब

सबसे बढ़िया उत्तर

निम्नलिखित का प्रयास करें:

T$gender <- as.factor(ifelse(as.numeric(as.character(T$gender)) == 2, 1, 0))
0
Lennyy 27 नवम्बर 2019, 08:56
मैंने कोशिश की है कि आप अनुशंसा करें, लेकिन यह काम नहीं करता है। परिणाम दिखाता है >> फैक्टर w/1 स्तर "0": 1 1 1 1 1 1 1 1 1 1 ... इस तरह। यह सभी मूल्यों को बदल देता है।
 – 
hyejuryu
27 नवम्बर 2019, 09:05

मुझे उम्मीद है कि इससे सहायता मिलेगी :

इनपुट:

a<-as.factor(c(1,2,1,2,1,2))
b<-NULL
for(i in 1:length(a)){
  if(a[i]==1){
    b[i]=1}
  else{b[i]=0}
}
b<-as.factor(b)
str(b)

आउटपुट:

Factor w/ 2 levels "0","1": 2 1 2 1 2 1

यहां ":" के बाद आउटपुट उस स्तर संख्या का प्रतिनिधित्व करता है जो बी स्तर 1 के सूचकांक से मेल खाता है 0 है, और स्तर 2 1 है और बी का आउटपुट है:

[1] 1 0 1 0 1 0

स्तर: 0 1

चूँकि b का पहला तत्व 1 है जो स्तर 2 से मेल खाता है, str(b) आपको ऊपर उल्लिखित आउटपुट देता है।

आर छोरों

-1
Tushar Joshi 27 नवम्बर 2019, 09:29