Tôi muốn có thể bỏ qua một cột được đọc vào R thông qua chức năng fread
trong v1.8.9. Nhưng các csv tôi đang đọc, không có tiêu đề cột ... mà dường như là một vấn đề cho fread ... là có một cách để chỉ định rằng tôi không muốn cột cụ thể?R sử dụng fread colClasses hoặc bỏ qua đối số để đọc csv không có tiêu đề cột
Sẽ tốt hơn nếu chỉ phân bổ trước tên cột và sau đó để nó đọc nó để nó có thể bị bỏ qua?
Để đưa ra một ví dụ ...
Tôi tải về các dữ liệu từ URL sau
http://www.truefx.com/dev/data/2013/MAY-2013/AUDUSD-2013-05.zip
giải nén nó ...
và đọc csv vào R sử dụng fread và nó có khá nhiều cùng tên tệp chỉ với phần mở rộng 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>
Tôi đã thử sử dụng colClasses (bỏ qua) mới hoặc bỏ qua đối số để bỏ qua thực tế là cột đầu tiên giống nhau… và không cần thiết.
nhưng làm:
pp1 <- fread("AUDUSD-2013-05.csv",sep=",",skip=1)
không bỏ qua việc đọc trong của cột đầu tiên
và sử dụng colClasses dẫn đến các lỗi sau
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
nỗ lực khác incude
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>
có khá nhiều chính xác giống như nếu tôi không sử dụng colClasses ...
Có đề xuất nào để tăng tốc độ đọc dữ liệu bằng cách bỏ cột đầu tiên không?
Cũng có thể hơi hỏi một chút, nhưng có thể đọc trực tiếp tệp zip thay vì giải nén tệp đầu tiên và sau đó đọc trong csv không?
Oh và nếu nó không phải là rõ ràng tôi đang sử dụng v1.8.9 data.table
Như mọi khi, cảm ơn vì tất cả sự giúp đỡ của bạn, công sức và tư vấn trước.
R thường tạo tên cột riêng như bạn có trên V1, V2 vv Vì vậy, nếu bạn có thể đọc trong dữ liệu như trên, tôi không chắc vấn đề là gì? Bạn có thể thử 'colClasses = NULL' mà không khai báo danh sách của nó. bạn cũng có thể điền vào các tham số 'colClasses = c (col1, col2, col3, col4, col5)' –
'skip' là về bỏ qua các hàng không cột; Tôi không tin rằng đã có một đối số 'col.skip', bạn sẽ nhận được một cải thiện tốc độ đáng chú ý - bạn vẫn phải đọc trong những ký tự đó trước khi quyết định từ bỏ chúng – eddi
@SanderVanderZeeuw Tôi đã thử phương pháp của bạn .. . nhưng có lỗi sau: 'pp <- fread (" AUDUSD-2013-05.csv ", sep =", ", colClasses = c (NULL," ký tự "," số "," số ")) ' ' Lỗi trong fread ("AUDUSD-2013-05.csv", sep = ",", colClasses = c (NULL, "ký tự",: colClasses không có tên và chiều dài 3 nhưng có 4 cột. data.table để biết thêm thông tin về đối số colClasses.' –