我有一个包含多个
sheetnames
的 Excel 文件,并且这些工作表名称并不总是具有相同的结构。我希望能够读取 Excel 文件,仅读取一些具体表,选择一些特定列,然后创建一个串联表我有以下 Excel 文件:
File_Mother.xlsx
它有 5 个工作表,但我们只需要那些名称开头带有模式“inning_19”的工作表,因此如果“inning_195”和“inning_1988”存在于 Excel 文件中,那么它们将是我们感兴趣的,提取列 ID_MATCH
和 SET_GAME
以及以模式“id_complete_game_on
”开头的所有其他列,最后创建一个列,让我知道当我们垂直 bind
所有选定的数据。例如:
从
File_Mother.xlsx
我有
sheet.name =“inning_195”并包含以下信息
ID_匹配 | 设置游戏 | id_complete_game_on_field | id_complete_game_on_camp | |
---|---|---|---|---|
X01 | M | 已清除 | 未清除 | |
X85 | 问 | 已清除 | 已清除 | |
X89 | 你 | 已清除 | 已清除 |
从
File_Mother.xlsx
我有
sheet.name =“inning_1988”并包含以下信息
ID_匹配 | 设置游戏 | id_complete_game_on_demand_one | id_complete_game_on_camp | |
---|---|---|---|---|
IKX01 | 先生 | 已完成 | 未清除 | |
IKX02 | DD | 未完成 | 已清除 | |
IKX03 | TT | 画画 | 已清除 |
在所需的数据整理之后,输出将是
ID_匹配 | 设置游戏 | id_complete_game_on_field | id_complete_game_on_camp | id_complete_game_on_demand_one | 工作表名称 |
---|---|---|---|---|---|
X01 | M | 已清除 | 未清除 | 不适用 | 局_195 |
X85 | 问 | 已清除 | 已清除 | 不适用 | 局_195 |
X89 | 你 | 已清除 | 已清除 | 不适用 | 局_195 |
IKX01 | 先生 | 不适用 | 不适用 | 已完成 | 局_1988 |
IKX02 | DD | 不适用 | 不适用 | 未完成 | 局_1988 |
IKX03 | TT | 不适用 | 不适用 | 画画 | 局_1988 |
我稍微编辑了阅读所有 Excel 表格,作者:@Jeromy Anglim。
library(dplyr)
library(purrr)
read_excel_somesheets <- function(filename, key,tibble = FALSE) {
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X) %>% mutate(sheet_name = X))
if(!tibble) x <- lapply(x, as.data.frame)
names(x) <- sheets
y <- x[grepl(key, names(x))] %>%
reduce(full_join)
y
}
那你可以试试
read_excel_somesheets("your_path/File_Mother.xlsx", "inning_19")
结果就像
ID_MATCH SET_GAME id_complete_game_on_field id_complete_game_on_camp sheet_name id_complete_game_on_demand_one
1 X01 M cleared not cleared inning_195 <NA>
2 X85 Q cleared cleared inning_195 <NA>
3 X89 U cleared cleared inning_195 <NA>
4 IKX01 MR <NA> not cleared inning_1988 completed
5 IKX02 DD <NA> cleared inning_1988 not completed
6 IKX03 TT <NA> cleared inning_1988 draw