2013-04-07 127 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跳过第二行写的。 如果你想跳过你可以在里面写专栏的[,#这里]