gpt4 book ai didi

r - 如何读取 dBase 文件的一部分

转载 作者:行者123 更新时间:2023-12-01 09:56:20 30 4
gpt4 key购买 nike

我有一个非常大的 dBase 文件 (1.64Gb)。使用标准 foreign::read.dbf() 函数在 R 中加载整个文件需要很长时间。我只想在数据集中加载几个变量。有人有解决办法吗?

最佳答案

我认为 foreign 包中的 read.dbf(...) 函数旨在读取 *.dbf 部分shapefile,在这种情况下,读取文件的一部分确实没有意义。你似乎想做一些不同的事情。

使用 RODBC 可能 起作用,具体取决于您的系统配置方式。如果您运行的是 Windows,并且安装了 dBASE ODBC 驱动程序,这可能对您有用(注意:当您安装 MSOffice 时,它​​会设置一个名为“dBase Files”的用户 dsn,应该可以从 RODBC。所以如果你安装了 MSOffice,这应该可以工作......)。

重要提示:这仅在您运行 32 位版本的 R 时有效。这是因为没有 64 位 dBASE ODBC 驱动程序。通常,当您下载 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 有两列,LENGTHCOASTLN010(这个文件实际上是海岸线形状文件的一部分,但这无关紧要......)。

如果这不起作用,请尝试:

 conn <- odbcConnectDbase("myTable.dbf")

关于r - 如何读取 dBase 文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26177062/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com