我有一些从多标签Excel导入的数据框,我希望将它们组合成一个大数据框。但首先,我想创建一个新列,将相应的工作表名称附加到每个数据框(即对于数据框A,创建值为“A”的新列,对于数据框B,创建值为“B”的新列)。有一个简单的方法吗?我想象某种循环,但我无法在网上找到解释如何从Excel中提取工作表名称的解决方案。非常感谢有关如何做到这一点的任何提示。谢谢!
答案 0 :(得分:0)
查看Hadley Wickham的readxl套餐。您可以使用excel_sheets()
获取工作簿中每个工作表的列表,然后可以在循环中使用它。
excel一书中有4个标签的示例我命名为" a"," b"," c"和" d" 。结果是一个列表,其中包含每个选项卡的数据框,数据框中的列跟踪工作表名称。
library(readxl)
#initialize readin listing
mysheets_fromexcel <- list()
mysheetlist <- excel_sheets(path="your/path/yourworkbook.xlsx")
i=1
for (i in 1:length(mysheetlist)){
tempdf <- read_excel(path="C:/Users/john/Desktop/Book1.xlsx", sheet = mysheetlist[i])
tempdf$sheetname <- mysheetlist[i]
mysheets_fromexcel[[i]] <- tempdf
}
mysheets_fromexcel
[[1]]
# A tibble: 3 x 2
revision sheetname
<dbl> <chr>
1 1 a
2 2 a
3 3 a
[[2]]
# A tibble: 3 x 2
revision sheetname
<dbl> <chr>
1 1 b
2 2 b
3 3 b
[[3]]
# A tibble: 3 x 2
revision sheetname
<dbl> <chr>
1 1 c
2 2 c
3 3 c
[[4]]
# A tibble: 3 x 2
revision sheetname
<dbl> <chr>
1 1 d
2 2 d
3 3 d
答案 1 :(得分:0)
我的解决方案基于akaDrHouse,但是我还不能以答案为准,因此我将其编写为单独的解决方案。我对for循环的数量以及如何选择工作表进行了一些小的更改。另外,我存储与表同名的单独数据框。 mysheets_fromexcel [[i]] <-pdf格式对我不起作用,它将工作表列表作为单独的小标题显示。
library(readxl)
xlsx_file <- "../path/to/excelfile.xlsx"
mysheets_fromexcel <- list()
mysheetlist <- excel_sheets(xlsx_file)
i=1
for (i in 1:length(mysheetlist[])){
tempdf <- read_excel(path=xlsx_file, sheet = i)
tempdf$sheetname <- mysheetlist[i]
##mysheets_fromexcel[[i]] <- tempdf
assign(mysheetlist[[i]], tempdf)
}