R:读取csv文件时删除页眉,页脚和零星的列标题

时间:2012-06-15 20:44:44

标签: r

我有一堆我需要阅读的csv文件。每个文件都有一个标题,大多数都有页脚,一半有列标题,这些列标题偶尔出现在文件正文中。我想删除页眉,页脚和零星的列标题。

我在几乎所有的问题和答案中都包含了可重复的示例,但在这种情况下,因为我正在阅读外部文件,所以我不知道该怎么做。

每个标题长三行。我可以使用以下行删除标题(使用'skip'):

d< - read.csv('c:/ users / mark w miller / simple R programs / data_with_header_footer.csv',header = T,skip = 2)

页眉和页脚之间的行数因文件而异。但是,页脚总是从以下行开始:'符号:'。页脚的第一行仅占据该行的第一个单元格。页脚中的行数因文件而异。

某些文件在文件正文中有偶尔的列标题。第一行以表格编号开头,例如“表4.3-1”。这些零星标题的最后一行始于以下内容:'Number_reporting''第1年''区域1''区域2''第2年''区域1''区域2'。

如何删除这些页脚和零星的列标题?我不希望手动编辑每个文件,因为有大量文件,手动删除大量行时可能会出错。

感谢您提出任何建议。

1 个答案:

答案 0 :(得分:3)

您可以使用readLines然后使用grep获取相关的页脚和列标题。没有更具体的内容,很难举一个例子。

dum.data<-readLines('some.txt')
dum.data<-dum.data[-c(1:3)]

if(length(grep("Symbols:",dum.data))>0){
dum.data<-dum.data[-c(grep("Symbols:",dum.data):length(dum.data))]
}

if(length(grep("Table[0-9].[0-9]".dum.data))>0){
dum.data<-dum.data[-c(grep("Table[0-9].[0-9]".dum.data):app.marker)]
}

app.marker对于你的零星标题的结尾来说是一个合适的grep,非常模糊。删除这些后,您可以根据需要处理由逗号等分割的余数。