2011-08-05 12 views
5

मैं R के लिए नया हूँ, और मेरी डाटासेट आयात किया है इस प्रकार है (डॉट्स मतलब डेटा वहाँ शेष है कि):मैंने आर में डेटा आयात किया है, स्कैटर प्लॉट कैसे बनाया जाए?

> num.csv <- read.csv("c:/num.csv", header=T) 
> print(num.csv) 
      X.Y 
1  22500;482 
2  25842;1 
3  27221;1 
4  32757;1 
5  40152;1 
.  . 
.  . 
.  . 

मैं इस डेटा के लिए एक बिखराव साजिश कैसे बना सकते हैं?

धन्यवाद।

+1

यदि आप आर के साथ काम कर रहे हैं तो प्रिंट (...) 'की कोई ज़रूरत नहीं है। ऑटोप्रिंटिंग का अर्थ है कि जब आप ऑब्जेक्ट का नाम दर्ज करते हैं और हिट रिटर्न देते हैं, तो आर आपके लिए 'प्रिंट() 'आमंत्रित करता है। –

+1

यह स्पष्ट रूप से काम नहीं किया है; आपके पास अब R में डेटा का एक स्तंभ है, कॉलम नाम 'X.Y' और आपके CSV फ़ाइल में मूल 2 कॉलम से डेटा सम्मिलित है। क्या आपकी फ़ाइल वास्तव में ** अल्पविराम ** अलग है। ऐसा लगता है कि इसे ';' से अलग किया गया है, जो बताता है कि आप एक विदेशी लोकेल में कंप्यूटर का उपयोग कर रहे हैं जहां आप दशमलव स्थान के रूप में ',' का उपयोग करते हैं। यदि ऐसा है, तो इसके बजाय 'read.csv2()' का उपयोग करें। यदि ऐसा है, तो कहानी का मनोबल यह जांचना है कि आपका डेटा सही तरीके से पढ़ा गया है। 'Str (foo)' और 'ncol (foo)', 'nrow (foo)' आदि का उपयोग करें, जहां 'foo' आपके डेटा वाले ऑब्जेक्ट है। –

+0

@ गैविन: या 'sep = "का उपयोग करें;" ' – nico

उत्तर

8

सबसे पहले, डेटा को अलग-अलग कॉलम में होना आवश्यक है। जबकि फ़ाइल को "सीएसवी" लेबल किया गया है, आप कॉमा के बजाय अलग करने के लिए अर्धविराम का उपयोग कर रहे हैं। या तो पुनः स्वरूपित या कोशिश:

num.csv <- read.csv("c:/num.csv", header=T, sep=";") 

तो फिर तुम एक साजिश बनाने के लिए आर के साथ विभिन्न अंकन संकुल से एक का उपयोग कर सकते हैं। उदाहरण के लिए:

install.packages("ggplot2"); #ggplot2 is not part of the standard install... 
library(ggplot2); 
qplot(X, Y, data=num.csv); 

मैंने ऊपर परीक्षण नहीं किया है, यह इस बात पर निर्भर करता है कि आपका डेटा फ्रेम read.csv से कैसे आता है।

+0

या, कोई केवल आर मूल 'साजिश' फ़ंक्शन का उपयोग कर सकता है: 'साजिश (एक्स, वाई, डेटा = num.csv)' । – nico

4

@ patrickmdmnet का जवाब जाने का तरीका है, लेकिन मुझे थोड़ा उत्सुकता मिली और बस प्रोग्रामेटिक समाधान की कोशिश करना चाहता था। कैसे आर strplit() funciton काम मैं ज्यादातर के उत्सुक था:

# Test matrix 
tmp.mtrx <- matrix(c("1;2", "3;4", "5;6", "7;8"), ncol=1) 

# The split 
tmp.split <- strsplit(tmp.mtrx, ";") 

# Put it all together into a new matrix 
new_matrix <- matrix(tmp.split[[1]], ncol=2) 
for(i in 2:length(tmp.split)){ 
    new_matrix <- rbind(new_matrix, tmp.split[[i]]) 
} 

# Do the plot originally asked for 
plot(new_matrix[,1], new_matrix[,2]) 

@ Chl - मैं असूचीबद्ध समारोह लिए देख रहा था, हालांकि बाद से मैं एक बहुत मैं प्रोग्रामिंग किया गया है समाधान पाश के बिना अच्छे बनाता है अक्सर यह मेरे कोड को अधिक पठनीय करने के लिए अच्छा लगता है अगर इसका प्रदर्शन पर बहुत अधिक प्रभाव नहीं पड़ता है। यहां कुछ और जटिल मैट्रिक्स के साथ च्ल का समाधान है:

# Test matrix 
tmp.mtrx <- matrix(c("1;2", 55, "3;4", 75, "5;6", 85, "7;8", 88), ncol=2) 

# The split 
tmp.split <- strsplit(tmp.mtrx, ";") 

# A vector with all the values, length = (ncol(tmp.mtrx) + 1)*nrow(tmp.mtrx) 
tmp.data_vector <- unlist(tmp.split) 

# Put it all together into a new matrix 
new_matrix <- matrix(tmp.data_vector, ncol=(ncol(tmp.mtrx)+1), byrow=TRUE) 

# Do the plot originally asked for 
plot(new_matrix[,1], new_matrix[,2]) 
+0

आप तीसरे ब्लॉक को 'matrix (as.numeric (unlist (tmp_split)), nc = 2, byrow = TRUE द्वारा सुरक्षित रूप से प्रतिस्थापित कर सकते हैं। ' साथ ही, 'प्लॉट' 2-कॉलम मैट्रिक्स के साथ अच्छी तरह से काम करता है, इसलिए अंतिम कथन को 'प्लॉट (new_matrix)' के साथ बदल दिया जा सकता है। – chl

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