[英]How do I write a function (analogous to a SAS macro) in R to import and format a list of Excel files?
我正在尋找一種更有效的方法來編寫以下內容:
讀入我所有的 Excel 文件
DF1 <- read_excel(DF1, sheet = "ABC", range = cell_cols(1:10) )
DF2 <- read_excel(DF2, sheet = "ABC", range = cell_cols(1:10) )
etc...
DF50 <- read_excel(DF50, sheet = "ABC", range = cell_cols(1:10) )
向每個 DF 添加一列,並帶有位置
DF1$Location <- location1
DF2$Location <- location2
etc...
DF50$Location <- location50
只保留指定名稱的列,去掉空白行,並將列 CR_NUMBER 轉換為整數
library(hablar)
DF1 <- DF1 %>% select(all_of(colnames_r)) %>% filter(!is.na(NAME)) %>% convert(int(CR_NUMBER))
DF2 <- DF2 %>% select(all_of(colnames_r)) %>% filter(!is.na(NAME)) %>% convert(int(CR_NUMBER))
etc...
DF50 <- DF50 %>% select(all_of(colnames_r)) %>% filter(!is.na(NAME)) %>% convert(int(CR_NUMBER))
您可以嘗試使用以下方法獲取列表中的數據:
library(readxl)
library(hablar)
library(dplyr)
#Get the complete path of file which has name "DF" followed by a number.
file_names <- list.files('/folder/path', pattern = 'DF\\d+', full.names = TRUE)
list_data <- lapply(seq_along(file_names), function(x) {
data <- read_excel(file_names[x], sheet = "ABC", range = cell_cols(1:10))
data %>%
mutate(Location = paste0('location', x))
select(all_of(colnames_r)) %>%
filter(!is.na(NAME)) %>%
convert(int(CR_NUMBER))
})
list_data
是一個數據幀列表,它通常更list_data
管理,而不是在全局環境中擁有 50 個數據幀。 如果您仍然希望所有數據幀分別命名列表並使用list2env
。
names(list_data) <- paste0('DF', seq_along(list_data))
list2env(list_data, .GlobalEnv)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.