2013-04-07 83 views
21

我有兩個標題行,第一行我想成爲頭一個CSV文件,但第二排我想放棄。如果我做了下面的命令:read.csv,在第一行頭,跳過第二行

data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE) 

第一行成爲頭和文件的第二行變成我的數據幀的第一行:

Xaaaaaaaaa  X X.1  Xbbbbbbbbbb  X.2 X.3 
1   Date PX_LAST NA   Date PX_LAST NA 
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA 

我想跳過這個第二行在CSV文件和剛剛獲得

X1.HK.Equity  X X.1 X2.HK.Equity  X.2 X.3 
2 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
3 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
4 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
5 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
6 07/01/2003 40.195 NA 07/01/2003 19.609 NA 

我想data <- read.csv("HK Stocks bbg.csv", header = T, stringsAsFactors = FALSE, skip = 1)但返回:

 Date PX_LAST X  Date.1 PX_LAST.1 X.1 
1 31/12/2002 38.855 NA 31/12/2002 19.547 NA 
2 02/01/2003 38.664 NA 02/01/2003 19.547 NA 
3 03/01/2003 40.386 NA 03/01/2003 19.547 NA 
4 06/01/2003 40.386 NA 06/01/2003 19.609 NA 
5 07/01/2003 40.195 NA 07/01/2003 19.609 NA 
6 08/01/2003 40.386 NA 08/01/2003 19.547 NA 

標題行來自我的CSV文件的第二行,不是第一線。

謝謝。

+4

你可以試試兩步法。在第一步中從第三行開始讀取無標題的數據。只讀取第一行作爲字符矢量,然後將字符矢量添加爲數據的名稱。 – djhurio 2013-04-07 07:56:25

+0

我檢查你的代碼,該行對我的作品:DF < - read.csv(FNAME,標題= T,stringsAsFactors = FALSE,跳過= 1) – andrii 2017-10-02 13:42:56

回答

43

這應該做的伎倆:

all_content = readLines("file.csv") 
skip_second = all_content[-2] 
dat = read.csv(textConnection(skip_second), header = TRUE, stringsAsFactors = FALSE) 

使用readLines的第一步將整個文件讀取到一個列表,其中列表中的每個項目代表了文件中的行。接下來,使用R中的負索引表示select all but this index這一事實來拋棄第二行。最後,我們將此數據提供給read.csv以將其處理爲data.frame

+0

感謝您的答覆。最後一行'DAT = read.csv(skip_second,標題= TRUE,stringsAsFactors = FALSE)'給我在文件中的錯誤的錯誤'(文件, 「RT」):無效 '描述' argument'。我怎樣才能讓read.csv接受一個變量而不是文件路徑? – mchangun 2013-04-07 08:39:58

+2

另外使用'textConnection'。 – 2013-04-07 09:03:59

+4

作爲一名保羅,這種方法在較小的文件(小於5MB)上出色地工作,但在更大的文件中遇到了麻煩。我問了一個問題,並提供了一個答案,讓它在這裏更好地處理較大的文件:http://stackoverflow.com/questions/24921387/long-lag-time-importing-large-csvs-in-r-with-頭功能於第二排 – 2014-07-23 22:02:53

1

可以剝離直接從數據框的標題後的第一線(S),允許你這樣做在一個行:

df<-read.csv("test.txt",header=T)[-1,] 

,如果我的數據文件「的test.txt」如下:

var1, var2 
units1, units2 
2.3,6.8 
4.5,6.7 

這給了我

> read.csv("test.txt",header=T)[-1,] 
var1 var2 
2 2.3 6.8 
3 4.5 6.7 

這正好回答你的問題,但只是爲了概括答案,你也可以跳過ñ次以這種方式中號條線:

df<-read.csv("test.txt",header=T)[-N:-M,] 

其中N和M是當然的整數。

0

跳過第二行,你只需要做

data = read.csv("Filename.csv", header = T)[-2,] 

-2跳過第二行寫的。 如果你想跳過你可以在裏面寫專欄的[,#這裏]