2010-12-01 17 views
7

मैंने एक .csv फ़ाइल से डेटा आयात किया, और डेटासेट संलग्न किया।
मेरी समस्या: एक चर पूर्णांक रूप में है और इसमें 2 9 5 स्तर हैं। मुझे दूसरों को बनाने के लिए इस चर का उपयोग करने की आवश्यकता है, लेकिन मुझे नहीं पता कि स्तरों से कैसे निपटें।आर डेटाफ्रेम में स्तर

ये क्या हैं, और मैं उनसे कैसे निपटूं?

+0

इसका मतलब कुछ स्तरों से हो सकता है, जिसका अर्थ है 'स्तर' से आपका क्या मतलब है। ऐसा लगता है कि आपकी संख्याओं को कारक चर में परिवर्तित कर दिया गया है क्योंकि कहीं भी बुरी तरह से गठित संख्या है, इसलिए आर इसे सभी को 'कारक' चर के रूप में परिवर्तित करता है। क्या आप यहां सटीक कोड और त्रुटि संदेशों को काट और पेस्ट कर सकते हैं? – Spacedman

+0

क्या आपने '? Factor' पढ़ा है? या 'स्तर ' – Marek

+0

setwd (" डी:/उपयोगकर्ता/मुझे/डेस्कटॉप ") डेटा <- read.csv (" Rdata.csv ") संलग्न करें (डेटा) सीटीआर <- के लिए (मैं 1: 4722 में) \t \t {as.integer (a [i]/b [i])} – user446667

उत्तर

1

चीजों को ठीक से पढ़ने के लिए सारांश (डेटा) करें। यदि स्तंभ संख्यात्मक नहीं हैं, तो इसे लागू करने के लिए read.csv को colClasses तर्क देखें, जो शायद खराब-गठित संख्याओं के लिए एनए मानों का भी परिणाम देगा।

सहायता (read.csv) मदद करेगा।

+0

स्पेस्डैन: क्या आप colClasses का उपयोग कर सकते हैं एनएएस को मजबूर करने के लिए? मैंने पहले ऐसा सोचा लेकिन txt <- c ("x, y, z", "1,2,3", "ए, बी, सी", "1,2,3"); डी <- read.table (textConnection (txt), sep = ",", header = TRUE, colClasses = rep ("numeric", 3)) स्कैन पर त्रुटियां। क्या कुछ ऐसा है जो मैं read.table में लापता हूं? – mdsumner

+0

@mdsummer: उन डबल-कोट्स को बाहर निकालें। वे आपके पात्रों को एक तरह से बंडल कर रहे हैं जिस तरह से आप इरादा नहीं कर रहे हैं। –

+0

@mdsummer: लेकिन समस्या बनी रहती है, वैसे भी। as.is = सत्य की आवश्यकता है। –

8

जब आप read.table (या read.csv? - आपने निर्दिष्ट नहीं किया है) के साथ डेटा में पढ़ते हैं, तो तर्क स्ट्रिंग्सएफ़ैक्टर्स = FALSE जोड़ें। फिर आपको इसके बजाय चरित्र डेटा मिलेगा।

यदि आप कॉलम के लिए पूर्णांक की अपेक्षा कर रहे हैं तो आपके पास डेटा होना चाहिए जो पूर्णांक के रूप में व्याख्या योग्य नहीं है, इसलिए इसे पढ़ने के बाद संख्यात्मक रूपांतरित करें।

txt <- c("x,y,z", "1,2,3", "a,b,c") 

d <- read.csv(textConnection(txt)) 
sapply(d, class) 
     x  y  z 
##"factor" "factor" "factor" 

## we don't want factors, but characters 
d <- read.csv(textConnection(txt), stringsAsFactors = FALSE) 
sapply(d, class) 

#   x   y   z 
#"character" "character" "character" 

## convert x to numeric, and wear NAs for non numeric data 
as.numeric(d$x) 

#[1] 1 NA 
#Warning message: 
#NAs introduced by coercion 

अंत में, यदि आप इन इनपुट विवरणों को अनदेखा करना चाहते हैं और कारक उपयोग से पूर्णांक स्तर निकालना चाहते हैं उदा। as.Numeric (स्तर (डी $ एक्स)) [डी $ एक्स], "चेतावनी" के अनुसार? कारक। !

+0

walkthrough के लिए धन्यवाद! –

4

अपने स्पष्टीकरण मैं सुझाव है कि आप read.table और हैडर = सही, stringAsFactors = FALSE के साथ अपने पढ़ने बयान फिर से करना और as.is से कार्य = stringsAsFactors और सितम्बर = ",":

datinp <- read.table("Rdata.csv", header=TRUE, stringAsFactors=FALSE , 
         as.is = !stringsAsFactors , sep=",") 
datinp$a <- as.numeric(datinp$a) 
datinp$b <- as.numeric(datinp$b) 
datinp$ctr <- with(datinp, as.integer(a/b)) # no loop needed when using vector arithmetic 
5

या आप बस

d$x2 = as.numeric(as.character(d$x)) का उपयोग कर सकते हैं।

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