-->

read.csv,报头对第一行中,跳过第二线(read.csv, header on first l

2019-08-20 03:08发布

我有两个标题行,第一行我想成为头一个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文件,而不是第一线的第二线。

谢谢。

Answer 1:

这应该做的伎俩:

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



Answer 2:

你可以在头后直接从数据框剥离第一线(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

这正是回答您的问题,只是概括的答案,你也可以跳过第N到第M这样行:

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

其中,N和M是当然的整数。


注意:此方法将所有列转换为因素。

str(read.csv("test.csv", header = TRUE)[-1,])
# 'data.frame': 2 obs. of  2 variables:
#   $ var1: Factor w/ 3 levels "2.3","4.5","units1": 1 2
#   $ var2: Factor w/ 3 levels " units2","6.7",..: 3 2


Answer 3:

在Linux(或Mac),你可以利用能够在使用Linux命令优势data.table::fread ,所以

data.table::fread("sed -e '2d' myfile.txt", data.table = F)

将跳过第二行。



文章来源: read.csv, header on first line, skip second line