R中的多个excel工作表

y3bcpkx1  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(149)

我有一个Excel文件,包含131张表格,所有表格都包含相同格式的数据。每张表格包含一个站点的数据,并以该编号和名称命名。下面是第13号站点的一张表格的示例:

(13) stationName

到目前为止,我一张一张地读,例如

data13 <- read_excel("mydata.xlsx", n_max = 65, skip = 1, sheet = 7)

每张表中有52个变量的数据,我通过选择所需的列来收集这些数据。

ID111 <- data13[c(1:9)] 
ID112 <- data13[c(1,10:17)]
ID113 <- data13[c(1,18:25)]
ID114 <- data13[c(1,26:33)]
ID115 <- data13[c(1,34:41)]
ID123 <- data13[c(1,42:49)]
ID122 <- data13[c(1,50:57)]
etc.

然后将它们放入列表中

datasets <- list(ID111, ID112, ID113, ID114, ID115, ID123, ID122) 
names(datasets) <- c(111, 112, 113, 114, 115, 123, 122)

然后我用

station13 <- map_dfr(datasets, ~ .x %>%
                       setNames( c("Year", "MS", "UL", "JS", "BF", "FF", "RF", "CL", "FL")) %>%
                       pivot_longer(cols = "MS":"FL",
                                    names_to = "Phase", 
                                    values_to = "DOY"
                       ), .id = 'Species') %>%
  relocate(Species, .after = 'Year')
station13$StationID <- "13"

在最后,我将使用rbind()将所有 Dataframe 合并到一个文件中,使所有excel工作表中的所有数据都包含在一个文件中。
到目前为止,我确实为每个站复制粘贴了它,并手动更改了站号。有没有办法让这更有效率?

2vuwiymt

2vuwiymt1#

您可以使用lapply将所有工作表直接读入一个列表(然后对列表执行所需的任何操作),而不是手动阅读131个工作表中的每一个工作表

library(readxl)
# File path
dataxlsx <- "/FilePath/data_file.xlsx"

# Read in all sheets in excel file to a list
xl_list <- lapply(excel_sheets(dataxlsx), read_excel, path = dataxlsx, n_max = 65, skip = 1)

您可以使用重命名

names(xl_list) <- excel_sheets(dataxlsx)

相关问题