10

v1.8.9data.tableの の関数を介して R に読み込まれる列をスキップできるようにしたいと考えています。freadしかし、私が読んでいるcsvには列ヘッダーがありません...これはfreadにとって問題のようです...特定の列が不要であることを指定する方法はありますか?

列名を事前に割り当ててから、スキップできるように読み取らせた方がよいでしょうか?

例を挙げると、次の URL からデータをダウンロードしました。

http://www.truefx.com/dev/data/2013/MAY-2013/AUDUSD-2013-05.zip

解凍しました…</p>

fread を使用して csv を R に読み込むと、csv 拡張子が付いたほぼ同じファイル名になります。

system.time(pp <- fread("AUDUSD-2013-05.csv",sep=","))
  user  system elapsed 
16.427   0.257  16.682 

head(pp)
       V1                    V2      V3      V4
1: AUD/USD 20130501 00:00:04.728 1.03693 1.03721
2: AUD/USD 20130501 00:00:21.540 1.03695 1.03721
3: AUD/USD 20130501 00:00:33.789 1.03694 1.03721
4: AUD/USD 20130501 00:00:37.499 1.03692 1.03724
5: AUD/USD 20130501 00:00:37.524 1.03697 1.03719
6: AUD/USD 20130501 00:00:39.789 1.03697 1.03717

str(pp)
Classes ‘data.table’ and 'data.frame':  4060762 obs. of  4 variables:
$ V1: chr  "AUD/USD" "AUD/USD" "AUD/USD" "AUD/USD" ...
$ V2: chr  "20130501 00:00:04.728" "20130501 00:00:21.540" "20130501 00:00:33.789" "20130501 00:00:37.499" ...
$ V3: num  1.04 1.04 1.04 1.04 1.04 ...
$ V4: num  1.04 1.04 1.04 1.04 1.04 ...
- attr(*, ".internal.selfref")=<externalptr> 

new(ish) colClasses または skip 引数を使用して、最初の列がすべて同じであるという事実を無視しようとしました...そして不要です。

しかし、やっている:

pp1 <- fread("AUDUSD-2013-05.csv",sep=",",skip=1)

最初の列の読み込みを省略しない

colClasses を使用すると、次のエラーが発生します

pp1 <- fread("AUDUSD-2013-05.csv",sep=",",colClasses=list(NULL,"character","numeric","numeric"))

Error in fread("AUDUSD-2013-05.csv", sep = ",", colClasses = list(NULL,  : 
 colClasses is type list but has no names

他の試みが含まれます

pp1 <- fread("AUDUSD-2013-06.csv",sep=",", colClasses=c(V1=NULL,V2="character",V3="numeric",V4="numeric"))
str(pp1)
Classes ‘data.table’ and 'data.frame':  5524877 obs. of  4 variables:
 $ V1: chr  "AUD/USD" "AUD/USD" "AUD/USD" "AUD/USD" ...
 $ V2: chr  "20130603 00:00:00.290" "20130603 00:00:00.291" "20130603 00:00:00.292" "20130603 00:00:03.014" ...
 $ V3: num  0.962 0.962 0.962 0.962 0.962 ...
 $ V4: num  0.962 0.962 0.962 0.962 0.962 ...
 - attr(*, ".internal.selfref")=<externalptr>

つまり、colClasses を使用しなかった場合とほとんど同じです...

最初の列を省略してデータの読み込みを高速化できる提案はありますか?

また、質問が少し多いかもしれませんが、最初に解凍してからcsvを読み取るのではなく、zipファイルを直接読み取ることは可能ですか?

ああ、それが明確でない場合は、data.table v1.8.9 を使用しています

4

1 に答える 1

16

あなたが探している引数は だと思いますdrop。試す:

require(data.table)  # 1.9.2+
pp <- fread("AUDUSD-2013-05.csv", drop = 1)

drop名前または位置で指定できることに注意してください。

fread("AUDUSD-2013-05.csv", drop = c("columThree","anotherColumnName"))

fread("AUDUSD-2013-05.csv", drop = 10:15)  # read all columns other than 10:15

select名前や役職でも構いません。

fread("AUDUSD-2013-05.csv", select = 10:15)  # read only columns 10:15

fread("AUDUSD-2013-05.csv", select = c("columnA","columnName2"))

これらの引数は v1.9.2 (2014 年 2 月に CRAN にリリース) に追加され、 に記載されてい?freadます。それらを使用するには、アップグレードする必要があります。

于 2014-07-11T04:41:23.720 に答える