R问题与Excel

时间:2019-05-17 07:29:39

标签: r

我正在一个项目中,我有多个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’ 

2 个答案:

答案 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")