从 R 中糟糕的 Excel 电子表格导入和整理
Importing and Tidying from Terrible Excel Spreadsheet in R
首先,请参阅 this url 以了解我正在格式化的数据类型的一个小示例。您会注意到我在工作表中突出显示了两个我试图 select 的区域。 selection 范围需要随着项目移入和移出数据集而动态变化。对于第一部分,我认为这段代码就足够了:
library(tidyverse)
library(readxl)
filename <- "MyDataset.xlsx"
#obtain first section of my excel spreadsheet
project_codes <- read_excel(
path = filename,
sheet = "Jan18",
range = "A10:B1000",
col_names = c("proj_num", "name")
) %>%
drop_na() %>%
filter(grepl("-", project_codes$proj_num))
第二部分是我被绊倒的地方...我想确保我 selected 的行子集与我的 'project_codes' 在另一个突出显示的区域中完全相同电子表格。
我有许多工作表的格式完全相同(并且命名约定是一致的 - Jan18、Feb18、Mar18),所以如果有人可以在解决第 1 部分后帮助我迭代工作表,那么加分。
library(tidyverse)
library(readxl)
filename <- "MyDataset.xlsx"
excel_sheets(filename) %>%
set_names() %>%
map_df(~ read_excel(
path = filename,
sheet = .,
range = "A6:N1000"
) %>%
filter(str_detect(`#`, "-")) %>%
select(`#`, `PROJECT NAME`, `Status`, `Cumulative Billings`, `Billing Adjustment`, `Contract Value`), .id = "Month")
# A tibble: 8 x 7
Month `#` `PROJECT NAME` Status `Cumulative Billings` `Billing Adjustment` `Contract Value`
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Jan18 1-11-0010 Project 1 715 6723 2138 1977
2 Jan18 1-11-0011 Project 2 1717 8330 8283 2588
3 Jan18 1-11-0012 Project 3 3332 2908 4938 7734
4 Jan18 1-11-0013 Project 4 2589 8714 6034 1476
5 Jan18 1-11-0014 Project 5 588 4969 2161 3334
6 Jan18 1-11-0015 Project 6 820 7688 4243 4293
7 Jan18 1-11-0020 Project 20 7287 333 9100 3078
8 Jan18 1-11-0030 Project 30 1564 487 7249 5508
map_df()
将遍历每个 sheet(使用 excel_sheets()
提取其名称)并创建一个数据框,其中有一列指示数据来自哪个 sheet .
我不得不依靠这个 将 sheet 的名称应用为它自己的列。
首先,请参阅 this url 以了解我正在格式化的数据类型的一个小示例。您会注意到我在工作表中突出显示了两个我试图 select 的区域。 selection 范围需要随着项目移入和移出数据集而动态变化。对于第一部分,我认为这段代码就足够了:
library(tidyverse)
library(readxl)
filename <- "MyDataset.xlsx"
#obtain first section of my excel spreadsheet
project_codes <- read_excel(
path = filename,
sheet = "Jan18",
range = "A10:B1000",
col_names = c("proj_num", "name")
) %>%
drop_na() %>%
filter(grepl("-", project_codes$proj_num))
第二部分是我被绊倒的地方...我想确保我 selected 的行子集与我的 'project_codes' 在另一个突出显示的区域中完全相同电子表格。
我有许多工作表的格式完全相同(并且命名约定是一致的 - Jan18、Feb18、Mar18),所以如果有人可以在解决第 1 部分后帮助我迭代工作表,那么加分。
library(tidyverse)
library(readxl)
filename <- "MyDataset.xlsx"
excel_sheets(filename) %>%
set_names() %>%
map_df(~ read_excel(
path = filename,
sheet = .,
range = "A6:N1000"
) %>%
filter(str_detect(`#`, "-")) %>%
select(`#`, `PROJECT NAME`, `Status`, `Cumulative Billings`, `Billing Adjustment`, `Contract Value`), .id = "Month")
# A tibble: 8 x 7
Month `#` `PROJECT NAME` Status `Cumulative Billings` `Billing Adjustment` `Contract Value`
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 Jan18 1-11-0010 Project 1 715 6723 2138 1977
2 Jan18 1-11-0011 Project 2 1717 8330 8283 2588
3 Jan18 1-11-0012 Project 3 3332 2908 4938 7734
4 Jan18 1-11-0013 Project 4 2589 8714 6034 1476
5 Jan18 1-11-0014 Project 5 588 4969 2161 3334
6 Jan18 1-11-0015 Project 6 820 7688 4243 4293
7 Jan18 1-11-0020 Project 20 7287 333 9100 3078
8 Jan18 1-11-0030 Project 30 1564 487 7249 5508
map_df()
将遍历每个 sheet(使用 excel_sheets()
提取其名称)并创建一个数据框,其中有一列指示数据来自哪个 sheet .
我不得不依靠这个