2013-04-26 32 views
1

的我一定是誤解R.作品如何read.csv我已經閱讀了幫助文件,但還是不明白,包含csv文件如何:[R正確使用read.csv

40900,-,-,-,241.75,0 
40905,244,245.79,241.25,244,22114 
40906,244,246.79,243.6,245.5,18024 
40907,246,248.5,246,247,60859 

讀成R使用:euk<-data.matrix(read.csv("path\to\csv.csv"))

產生此爲(使用tail)結果:

  Date Open High Low Close Volume 
[2713,] 15329 490 404 369 240.75 62763 
[2714,] 15330 495 409 378 242.50 127534 
[2715,] 15331 1 1 1 241.75  0 
[2716,] 15336 504 425 385 244.00 22114 
[2717,] 15337 504 432 396 245.50 18024 
[2718,] 15338 512 442 405 247.00 60859 

現在一定是很明顯,我不明白。請在你的迴應中表現出善意,我正在努力學習。

謝謝!

+0

您的輸入有6列,矩陣也有6列(加上「索引」列(用方括號括起來)...什麼似乎是問題? – Barranka 2013-04-26 18:14:14

+0

看最後一行40907得到更改爲15338 ,246被改爲512,等等...... – mrkb80 2013-04-26 18:16:24

回答

8

該問題與read.csv不符,但與data.matrixread.csv將任何帶有字符的列作爲因子導入。數據集第一行中的' - '是字符,因此該列被轉換爲一個因子。現在,您將read.csv的結果傳遞給data.matrix,並且作爲幫助狀態,它將用它的內部代碼替換該因子的級別。

基本上,您需要確保在將數據幀傳遞到data.matrix之前,您的數據列是數字。

這應該工作你的情況(假設只有字符「 - 」):

euk <- data.matrix(read.csv("path/to/csv.csv", na.strings = "-", colClasses = 'numeric')) 
+0

解釋了1在哪裏 - 但是,值246被更改爲512? – mrkb80 2013-04-26 18:17:24

+0

@ mrkb80:與來自'euk < - read.csv(「path \ to \ csv.csv「)' – Aaron 2013-04-26 18:19:19

+0

@ mrkb80 512必須內部因子代碼爲256. – Seth 2013-04-26 18:23:35

0

我沒有R專家,但你可以考慮使用scan()代替,例如:

> data = scan("foo.csv", what = list(x = numeric(), y = numeric()), sep = ",") 

凡foo.csv有兩列,x和y,並以逗號分隔。我希望有所幫助。

0

我把你的數據的剪切/粘貼,把它放在一個文件,我得到這個使用「R '

> c<-data.matrix(read.csv("c:/DOCUME~1/Philip/LOCALS~1/Temp/x.csv",header=F)) 
> c 
     V1 V2 V3 V4  V5 V6 
[1,] 40900 1 1 1 241.75  0 
[2,] 40905 2 2 2 244.00 22114 
[3,] 40906 2 3 3 245.50 18024 
[4,] 40907 3 4 4 247.00 60859 
> 

數據文件中必須有更多數據,比如標題行的數據。而你顯示輸出似乎開始有2713行我會檢查:

The format of the header line, or get rid of it and add it manually later. 
That each row has exactly 6 values. 
The the filename uses forward slashes and has no embedded spaces 
(use the 8.3 representation as shown in my filename). 

另外,如果你從生成MS Excel的CSV文件,對於日期的內部表示是一個數字。

+0

是的,還有更多的數據我只是用'尾巴'拉最後幾行。我編輯了這個問題來反映這一點。謝謝! – mrkb80 2013-04-26 19:24:43