2行のヘッダー行を持つCSVファイルがあります。1行目はヘッダーにしたいのですが、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行目から取得されます。
ありがとうございました。
これはトリックを行う必要があります:
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
を意味するという事実を使用して、2行目を破棄します。最後に、このデータをread.csv
にフィードして、data.frame
に処理します。
ヘッダーの後の最初の行をデータフレームから直接削除して、これを1行で行うことができます。
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 [〜#〜]thをスキップすることもできます[〜#〜] m [〜#〜]th行は次のようになります。
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
Linux(またはMac)では、data.table::fread
でLinuxコマンドを使用できるという利点を活用できます。
data.table::fread("sed -e '2d' myfile.txt", data.table = F)
2行目をスキップします。