31

2 つのヘッダー行を持つ CSV ファイルがあります。最初の行はヘッダーにしたいのですが、2 番目の行は破棄したいです。次のコマンドを実行すると:

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

最初の行がヘッダーになり、ファイルの 2 行目がデータ フレームの最初の行になります。

  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 ファイルのこの 2 行目をスキップして、

  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 ファイルの 1 行目ではなく 2 行目から取得されます。

ありがとうございました。

4

3 に答える 3

59

これでうまくいくはずです:

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

を使用した最初のステップreadLinesでは、ファイル全体をリストに読み込みます。リスト内の各項目は、ファイル内の行を表します。次に、R の負のインデックスが を意味するという事実を使用して、2 行目を破棄しますselect all but this index。最後に、このデータを にフィードして、read.csvに処理しますdata.frame

于 2013-04-07T08:12:24.857 に答える