下载一个大的压缩 CSV 文件,在 Linux 上解压并读入 R

Download a large zipped CSV file, unzip and read into R on Linux

我希望在我的环境中读入一个大型 CSV (~ 8Gb),但我遇到了问题。

我的数据是公开可用的数据集:

# CREATE A TEMP FILE TO STORE THE DOWNLOADED DATA
temp <- tempfile()

# DOWNLOAD THE FILE FROM THE CMS
download.file("https://download.cms.gov/nppes/NPPES_Data_Dissemination_February_2022.zip",
              destfile = temp)

这就是我 运行 遇到困难的地方,我不熟悉 linux 工作目录和创建临时文件夹的位置。

当我使用 list.dir()list.files() 时,我没有看到任何对此临时文件的引用。

我在一个R项目中工作,我的工作负责人如下:

getwd()
[1] "/home/myName/myProjectName"

我能够读取文件的第一部分,但我的系统在大约 4Gb 后崩溃。

# UNZIP THE NPI FILE
npi <- unz(temp, "npidata_pfile_20050523-20220213.csv")

然后我遇到了 post,它具有使用 system2 解压缩功能解压缩大型 zip 文件的功能。然而,由于我有限的 R 知识和 Linux 经验,我无法获得指向临时文件夹中下载文件的功能

检查上面 temp 的路径我得到以下路径:

temp
[1] "/tmp/Rtmpl6SHIJ/file7e5e6c1fc693"

使用上面 link 中的 system2 函数,我尝试了以下操作:

x <- decompress_file(directory = temp,
                     file = "NPPES_Data_Dissemination_February_2022.zip")

但是在设置工作目录时出现如下错误:

任何关于如何根据文件大小解压缩并将其读入内存的指示都将不胜感激。

temp 是文件的路径,而不仅仅是目录。默认情况下,tempfile 不添加文件扩展名。可以使用 tempfile(fileext = ".zip")

来完成

因此,decompress_file 无法将工作目录设置为文件。试试这个:

x <- decompress_file(directory = dirname(temp), file = basename(temp))

可能是文件权限问题。要绕过它,请在您已经在的目录中工作,或者知道您可以访问。


# DOWNLOAD THE FILE 
# to a directory you can access, and name the file. No need to overcomplicate this.

download.file("https://download.cms.gov/nppes/NPPES_Data_Dissemination_February_2022.zip",
              destfile = "/home/myName/myProjectname/npi.csv")

# use the decompress function if you need to, though unzip might work
x <- decompress_file(directory = "/home/myName/myProjectname/",
                     file = "npi.zip")

# remove .zip file if you need the space back
file.remove("/home/myName/myProjectname/npi.zip")