我想在不解压缩文件的情况下将所有.csv文件从一个大的zip文件读取到r中。我理解如何对每个文件单独执行此操作,如下所示。
df1<- read_csv(unz("myfile.zip", "file1.csv"))
df2<- read_csv(unz("myfile.zip", "file2.csv"))
df3<- bind_rows(df1, df2)
如何对zip文件夹中的所有文件执行此操作,并将它们组合成一个数据帧?我想做这样的事情:
temp = list.files(path= "myfile.zip", pattern="*.csv", full.names = T)
myfiles = map_df(temp, read_csv)
我感兴趣的zip文件是主要机构2020财年的奖励交易数据。zip文件的链接是https://files.usaspending.gov/award_data_archive/FY2020_All_Contracts_Full_20221008.zip.我想在我的工作目录中保持解压缩的原因是它占用了我电脑上太多的空间。
试试这个:
temp <- unzip("myfile.zip", list = TRUE)$Name
temp <- grep("csv$", temp, value = TRUE)
df <- bind_rows(lapply(temp, function(fn) read_csv(unz("myfile.zip", fn))))