0

読む必要のあるcsvファイルがたくさんあります。各ファイルにはヘッダーがあり、ほとんどにフッターがあり、半分にはファイルの本文内に散発的に表示される列見出しがあります。ヘッダー、フッター、散発的な列見出しを削除したいと思います。

ほぼすべての質問と回答に再現可能な例を含めていますが、この場合、外部ファイルを読んでいるため、その方法がわかりません。

各ヘッダーの長さは3行です。次の行(「スキップ」を使用)でヘッダーを削除できます。

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''Year 1''Area 1''Area 2''Year 2'' Area 1'' Area2'。

これらのフッターと散発的な列見出しを削除するにはどうすればよいですか?多数のファイルがあり、多くの行を手動で削除するとエラーが発生する可能性があるため、各ファイルを手動で編集することは避けたいと思います。

提案ありがとうございます。

4

1 に答える 1

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になります。これらが削除されたら、必要に応じてカンマなどで分割された余りを処理できます。

于 2012-06-15T21:12:50.117 に答える