2014-06-17 8 views
5

मैं आर में एक कारक चर पुनःकूटित कोशिश कर रहा हूँ और निम्नलिखित कोड का उपयोग कर:आर recode चर - अप्रत्याशित INCOMPLETE_STRING

library(car) 
napier_captureComplexity=recode(napier$a_SpatialConnectivity,"'1 - Very simple and clear:  no diagrams, single sheets'=1;'2 - Reasonably simple: some simple diagrams or second sheets'=2;'3 - Reasonably complex: multiple diagrams or sheets but can be followed'=3;'4 - Moderately complex: multiple diagrams and sheets'=4;'5 - Very complex'=5;",as.factor.result=FALSE) 

और निम्न त्रुटि संदेश मिलता है:

Error in parse(text = range[[1]][1]) : <text>:1:1: unexpected INCOMPLETE_STRING 1: '4 - Moderately complex 
एक^नीचे के साथ

संख्या 4

मुझे यकीन नहीं है कि इसका क्या कारण है, मैंने इस बारे में सोचा था: कोड के माध्यम से, लेकिन मैं c() का उपयोग नहीं कर रहा हूं और कोड डेटासेट में अन्य कारकों पर ठीक निष्पादित करता है उन में milar स्ट्रिंग मूल्य।

किसी भी मदद की सराहना की जाती है!

उत्तर

1

recode इस बात की व्याख्या करता है: मानों की एक श्रृंखला का प्रतिनिधित्व करने के रूप में, भले ही यह एक स्ट्रिंग के अंदर है, और: स्ट्रिंग को समय-समय पर समाप्त करने के रूप में व्याख्या की जाती है। उदाहरण के लिए:

x = c("a","b","c") 
recode(x, "'a'=1; 'b'=2; 'c'=3;") 
[1] 1 2 3 

लेकिन

x = c("a:d","b","c") 
recode(x, "'a:d'=1; 'b'=2; 'c'=3;") 
Error in parse(text = range[[1]][1]) : 
    <text>:1:1: unexpected INCOMPLETE_STRING 
1: 'a 
    ^

हर उदाहरण मैं स्ट्रिंग की कोशिश की है में पर समाप्त:, एक त्रुटि के कारण।

+0

यह एक समाधान नहीं है, मुझे लगता है।) –

4

यह वास्तव में आपके विवरण में ":" की वजह से है। यह फ़ंक्शन काम करने के लिए कुछ विषम eval और strsplit कथन का उपयोग करता है। यह ":" में विभाजित होता है क्योंकि यह उनके वाक्यविन्यास में एक विशेष कोड है और ऐसा से बचने का कोई तरीका नहीं है।

लेकिन मुझे लगता है कि napier$a_SpatialConnectivity उन स्तरों के साथ एक कारक है? आप factor() कॉल में स्तरों को स्पष्ट रूप से सेट करके चर को रिकोड कर सकते हैं।

mylevels <- c("1 - Very simple and clear:  no diagrams, single sheets", 
    "2 - Reasonably simple: some simple diagrams or second sheets", 
    "3 - Reasonably complex: multiple diagrams or sheets but can be followed", 
    "4 - Moderately complex: multiple diagrams and sheets", 
    "5 - Very complex") 

napier_captureComplexity <- as.numeric(factor(napier$a_SpatialConnectivity, levels=mylevels)) 

वह स्तर 1: 5 का आदेश देगा जो कि ऐसा होता है कि आपने वैसे भी उन्हें फिर से चलाने की कोशिश की।

+0

मैंने आपकी विधि का पालन किया, सभी मूल्य 'NA' बन गए ... क्या आप सुनिश्चित हैं कि आपकी विधि काम करती है? –

+0

हाँ मुझे यकीन है। यदि आप 'nleier <-data.frame (a_SpatialConnectivity = नमूना (mylevels, 20, replace = t) को परिभाषित करते हैं) '' mylevels 'को परिभाषित करने के बाद, कोड चलाएगा और संख्यात्मक मानों का उत्पादन करेगा, न कि NA। – MrFlick

+0

मुझे लगता है कि आपके कोड में कुछ गड़बड़ है। यदि आप 'napier <-' का उपयोग करते हैं, तो परिणाम है * napier केवल एक कॉलम * होगा। मेरे मामले में, यह 'वयस्क $ वेतन' है। आपकी विधि के अनुसार, 'mylevels <-c ("<=50K"," > 50K") डेटा.फ्रेम (वेतन = नमूना (mylevels, 938, प्रतिस्थापित = टी))', यह कोड 938 पंक्ति के साथ डेटा.फ्रेम उत्पन्न करता है, और आंतरिक डेटा अभी भी "<=50K"," > 50K" है, ** ** ** ** ** ** ** और इसका मूल 'वयस्क $ वेतन' में मूल डेटा से कोई लेना देना नहीं है। मैं इस पर एक घंटे से अधिक समय से काम कर रहा हूं। –

संबंधित मुद्दे