我有一個非常大的dBase文件(1.64Gb)。使用標準的foreign::read.dbf()
函數在R中加載整個文件需要很長時間。我想只加載數據集中的一些變量。有沒有人有辦法解決嗎 ?如何讀取dBase文件的一部分
3
A
回答
6
我認爲foreign
包中的read.dbf(...)
函數是用於讀取shape文件的*.dbf
部分,在這種情況下,讀取部分文件確實沒有意義。你似乎想要做一些不同的事情。
使用RODBC
威力工作,這取決於你的系統配置。如果您正在運行Windows,並且安裝了dBASE ODBC驅動程序,則可能適用於您(請注意:安裝MSOffice時,它會設置一個名爲「dBase文件」的用戶dsn,該文件應可從RODBC
訪問。所以如果你安裝了MSOffice,這應該可以......)。
重要提示:這個如果你是因爲沒有64位的dBASE ODBC驅動程序運行R的32位版本,這隻會工作。一般來說,當你下載64位R時,你可以同時獲得32位和64位版本,所以它只是在它們之間切換的問題。
library(RODBC)
# setwd("< directory with your files >")
conn <- odbcConnect(dsn="dBASE Files")
df <- sqlFetch(conn,"myTable",max=10) # grab first ten rows
head(df)
# LENGTH COASTLN010
# 1 0.02482170 1
# 2 0.01832134 2
# 3 0.03117752 3
# 4 0.04269755 4
# 5 0.02696307 5
# 6 0.05047828 6
sqlQuery(conn,"select * from myTable where LENGTH<0.008")
# LENGTH COASTLN010
# 1 0.00625200 186
# 2 0.00634897 379
# 3 0.00733319 1583
# 4 0.00369786 1617
# 5 0.00722233 1618
# 6 0.00524176 1636
上面的例子只是想給你一個如何使用RODBC
的想法。在這個例子中,我有一個文件myTable.dbf
在「包含所有文件的目錄」中,並且這個dbf有兩列,分別是LENGTH
和COASTLN010
(這個文件實際上是海岸線shapefile的一部分,但這是不相關的......)。
如果這不起作用嘗試:
conn <- odbcConnectDbase("myTable.dbf")
相關問題
- 1. 用PHP讀取文件的一部分
- 2. 如何一次讀取批量/部分/ 1000行的文件
- 3. 使Android XML讀取器僅讀取XML文件的一部分
- 4. 如何在寫入文件時逐個部分讀取文件?
- 5. 文本文件讀取錯誤(部分)
- 6. 從外部配置文件中讀取appSettings的一部分
- 7. 如何讀取文本文件的第一個元素,如果它匹配,讀取該行的其餘部分?
- 8. 如何使用numpy讀取文件的不同部分或塊
- 9. 如何在Python中讀取大文件的特定部分
- 10. 如何讀取文件的特定部分
- 11. 如何使用tcl讀取文件的每個部分?
- 12. 如何讀取RTF文件的部分並保持格式化
- 13. 只讀文件中的一個部分
- 14. 文件閱讀:獲取部分輸出
- 15. 用BDE讀取dBase使得文件句柄太多
- 16. 如何使用C#/ .NET ODBC或OLE讀取/寫入dBase III文件?
- 17. 如何讀取文件的一部分(解析),中斷python中的「<」字符?
- 18. 如何在C++中讀取txt文件中的行的一部分
- 19. 如何讀取Python,C或Java中的大數據文件的一部分?
- 20. c#:如何閱讀文件的一部分? (DICOM)
- 21. 如何破解dBase文件密碼?
- 22. 在閱讀文本文件時,它只讀取其中的一部分
- 23. 寫入後讀取文件的一部分
- 24. 使用HTTP讀取文件的第一部分
- 25. MsBuild:使用ReadLinesFromFile讀取文件的一部分
- 26. 用C++讀取txt文件的一部分
- 27. 在powershell中讀取文件的一部分
- 28. 只讀取和處理XML文件的一部分
- 29. 在qt中讀取svg文件的一部分
- 30. 使用fread將文件的一部分讀取到緩衝區
'odbcConnectDbase'不存在。你在哪裏找到這個功能? – PAC 2014-10-06 13:20:01
它在包'RODBC'中,以及'odbcConnect(...)'。 – jlhoward 2014-10-06 13:27:24