data.table
'un fread
işlevi v1.8.9 aracılığıyla R'ye okunan bir sütunu atlayabilmek istiyorum. Fakat okuduğum csv, sütun başlıklarına sahip değil… bu, yaymak için bir problem gibi görünüyor… sadece belirli sütunları istemediğimi belirtmenin bir yolu var mı?R fread colClasses kullanarak veya sütun başlıkları olmadan csv'yi okumak için argümanları atla
Bir sütun adını önceden ayırmak ve ardından atlanabilmesi için okunmasını sağlamak daha iyi olur mu?
... Benhttp://www.truefx.com/dev/data/2013/MAY-2013/AUDUSD-2013-05.zip
bunu fermuarını aşağıdaki URL'den verilerini indirilen ...
Bir örnek vermek ve fread Ar içine csv okuyun ve hemen hemen sahiptir etmek Sadece csv uzantısı ile aynı dosya adı.
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>
İlk sütun ... hepsi aynıdır ve gereksiz olduğu gerçeğini görmezden argümanları yeni (imsi) colClasses kullanarak veya atlama çalıştı. yapıyor
ama: colClasses ilk sütunda
içinde okuma ihmal etmez
pp1 <- fread("AUDUSD-2013-05.csv",sep=",",skip=1)
ve kullanma
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
diğer girişimler
incude aşağıdaki hataya yol açmaktadırpp1 <- 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>
Ben hemen hemen aynı ben tam olarak kullanmamış sanki ...
İlk sütunu atlayarak verilerin okunmasını hızlandırabilmek için herhangi bir öneri var mı?
Ayrıca belki de sormak için biraz fazla, ama önce bir zip dosyası ilk önce unzipping ve daha sonra csv okuma yerine doğrudan okumak mümkün mü?
Oh ve belli değildi olsaydı ben data.table v1.8.9 kullanıyorum
Her zaman olduğu gibi önceden yardım, çaba ve tavsiye tümü için teşekkürler.
R genellikle V1, V2 vb. Üzerinde sahip olduğunuz gibi kendi sütun adlarını oluşturur. Yani yukarıdaki gibi bir veri okuyabiliyorsanız, sorunun ne olduğundan emin değilim? Bir listeyi ilan etmeden colClasses = NULL 'yapmayı deneyebilirsiniz. Ayrıca 'colClasses = c (col1, col2, col3, col4, col5)' doldurabilirsiniz ' –
'skip' argümanı sütunları değil satırları atlamakla ilgilidir; Ben bir 'col.skip' argümanı olsaydı, fark edilebilir bir hız iyileşmesi elde ettiğine ikna olmadım - onları terk etmeye karar vermeden önce bu karakterleri okumak zorunda kalacaksınız – eddi
@SanderVanderZeeuw Metodunu denedim .. . ama aşağıdaki hatayı aldım: 'pp <- fread (" AUDUSD-2013-05.csv ", sep =", ", colClasses = c (NULL," character "," sayısal "," sayısal ")) 'Yayılma hatası (" AUDUSD-2013-05.csv ", sep =", ", colClasses = c (NULL," character ",: colClasses adsız ve uzunluk 3 ama 4 sütun var. colClasses argument.' hakkında daha fazla bilgi için data.table @ –