2013-04-07 86 views
0

我有2個csv數據文件。 1分鐘的酒吧和5分鐘的酒吧。 這兩個文件都是相同的格式。2 csv文件返回不同的數據類型

文件1是

> 2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.4,750.4,750,750.2 
    2007-01-02 10:01:00.000,NIFTY,ABB,2007-01-02 10:01:00.000,750.38,750.4,749.8,749.8 
    2007-01-02 10:02:00.000,NIFTY,ABB,2007-01-02 10:02:00.000,749.8,750,749.6,750 
    2007-01-02 10:03:00.000,NIFTY,ABB,2007-01-02 10:03:00.000,749.6,752.4,749.6,752 
    2007-01-02 10:04:00.000,NIFTY,ABB,2007-01-02 10:04:00.000,752,755.8,752,754.2 
    2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,754.02,755,752.05,753.6 
    2007-01-02 10:06:00.000,NIFTY,ABB,2007-01-02 10:06:00.000,753,753,751,751 
    2007-01-02 10:07:00.000,NIFTY,ABB,2007-01-02 10:07:00.000,751,751.62,750.5,751 
    2007-01-02 10:08:00.000,NIFTY,ABB,2007-01-02 10:08:00.000,750.8,751,750.2,750.62 

文件2是

> 2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.2,754.2,749.8,753.6 
    2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,753.6,753.6,750.62,752.8 
    2007-01-02 10:10:00.000,NIFTY,ABB,2007-01-02 10:10:00.000,752.8,752.8,750.2,751.5 
    2007-01-02 10:15:00.000,NIFTY,ABB,2007-01-02 10:15:00.000,751.5,752,751,751.6 
    2007-01-02 10:20:00.000,NIFTY,ABB,2007-01-02 10:20:00.000,751.6,751.6,750.8,751 
    2007-01-02 10:25:00.000,NIFTY,ABB,2007-01-02 10:25:00.000,751,751.2,749,749 
    2007-01-02 10:30:00.000,NIFTY,ABB,2007-01-02 10:30:00.000,749,751.8,749,751.8 
    2007-01-02 10:35:00.000,NIFTY,ABB,2007-01-02 10:35:00.000,751.8,752,751.1,751.4 

現在我運行 一個< - read.csv( 「file1.csv」)

類(A [ (a [,5:8])是數字

而在文件的情況下,2

b < - read.csv( 「file2.csv」)

類(B [1:4])是因子

類(B [ ,5:8])是因素。

怎麼樣的列5:8是因素。這種因素類型的數據不會讓我繼續我的分析。任何想法。

+0

單獨的數據是否會發生問題,還是有額外的行?也許第二個文件中有一行包含字符串?我相信R會強制將行中的所有內容強制轉換爲字符串,並且默認情況下會將字符串轉換爲因子。 (請參閱'stringsAsFactors'參數以'read.table'。) – Mars 2013-04-07 04:23:14

回答

4

很難說沒有看實際的文件。這些列中可能會隱藏一些字符。

要找出,請使用read.csv中的stringsAsFactors = F將因子讀取爲字符。接下來,使用as.numeric將字符列轉換爲數字。這將引入NAs來代替實際的字符。最後找出使用is.na

注意:可以使用as.numeric將因子類型轉換爲數字,但在此情況下會產生不希望的結果。

2

當我將示例數據粘貼到兩個文件中並使用read.csv()讀取這兩個文件時,它們的前四列爲因子,第二組四列爲數字,所以我無法複製您的問題,不幸。這可能是文件中的某些內容沒有成爲你的例子。

當我修改「file2.csv」閱讀:

2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.2,754.2,749.8,753.6 
2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,753.6,753.6,750.62,752.8 
2007-01-02 10:10:00.000,NIFTY,ABB,2007-01-02 10:10:00.000,752.8,752.8,750.2,751.5 
2007-01-02 10:15:00.000,NIFTY,ABB,2007-01-02 10:15:00.000,751.5,752,751,751.6 
2007-01-02 10:20:00.000,NIFTY,ABB,2007-01-02 10:20:00.000,751.6,751.6,750.8,751 
2007-01-02 10:25:00.000,NIFTY,ABB,2007-01-02 10:25:00.000,751,751.2,749,749 
2007-01-02 10:30:00.000,NIFTY,ABB,2007-01-02 10:30:00.000,749,751.8,749,751.8 
2007-01-02 10:35:00.000,NIFTY,ABB,2007-01-02 10:35:00.000,a,b,c,d 

...我確實發現,在過去四列分別爲因素讀取,這樣建議,我認爲有可能是不 - 在你的「file2.csv」的那些列的某個地方的數字數據。

我還注意到,你可能想使用類似:

a<-read.csv("file1.csv",header=F) 
b<-read.csv("file2.csv",header=F) 

...以避免第一行被轉換成標題,但是,我是否有header=F與否沒有改變結果。僅供參考我在Windows 7,64位上使用R 2.15.3。

+0

謝謝你的幫助。它確實排序我的問題。我的文件在一個單元中實際上有NULL。當我刪除NULL它的作品。再次感謝 – user1177819 2013-04-07 06:14:31

+0

@ user1177819:很高興提供幫助。請選擇哪個答案對您最有幫助,並選中該框以接受它。如果你不確定選擇哪一個,e4e5f4的答案在我之前有一點,他或她確定了相同的潛在問題,所以你可能想選擇那個。 – Simon 2013-04-07 08:04:49