我正在一个项目中,我有多个excel文件,每个文件都有多个工作簿,我必须从其中一个工作簿(假设为sheet=6
)中获取数据,然后将所有这些数据存储起来在新的.xls
或.csv
文件中。
在尝试从文件中读取数据并将其放入列表时遇到了问题。出现以下错误:
Error: `path` does not exist: ‘BillingReport___Gurgaon-Apr-2019.xlsx’
我正在尝试获取mapdfr函数。
library(purrr)
library(readxl)
library(dplyr)
library(rio)
library(XLConnect)
library(tidyverse)
setwd ="F:/Capstone/Billing Reports final/"
#Set path of Billing source folder
billingptah <- "F:/Capstone/Billing Reports final/"
#Set path of destination folder
csvexportpath <- "F:/Capstone/Billing_data/billing_data.csv"
#get the names of the files to be loaded
files_to_load <- list.files(path = billingptah)
files_to_load
#Load all the data into one file
billing_data <- map_dfr(files_to_load, function(x) map_dfr( excel_sheets(x) , function(y) read_excel(path=x, sheet = 6,col_types = "text" ) %>% mutate(sheet=6) ) %>% mutate(filename=x) )
以下是错误消息:
Error: `path` does not exist:
‘BillingReport___Gurgaon-Apr-2019.xlsx’
答案 0 :(得分:0)
这都是关于相对路径和绝对路径的差异。您要告诉R加载位于当前工作目录中名为‘BillingReport___Gurgaon-Apr-2019.xlsx’
的文件。您需要添加访问该文件名的路径作为后缀。构建files_to_load
后,请尝试以下操作:
files_to_load <- paste0(billingptah, files_to_load)
它将告诉R访问位于file_to_load
目录中以billingptah
命名的文件。
修改
让我为您指出一些有用的链接:
答案 1 :(得分:0)
Elie Ker Arno是正确的。
但是有更简单的方法:
您可以将工作目录设置为billingptah
。
library(tidyverse)
library(readxl)
setwd(billingpath)
files <- list.files()
或做
files <- list.files(path = billingpath, full.names = T)
它将把每个文件的完整路径读入files
。
您的代码给了我一个奇怪的结果。这比较容易,并且对我有用。它为您提供了一个整洁的解决方案,文件名位于spearate列中,而不是行名中。
loaded <- map(files, function(x) read_excel(path=x, sheet = 6,col_types = "text")) %>%
`names<-`(files) %>%
bind_rows(.id = "file")