[英]multiple excel sheets in R
我有一個 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() 組合所有數據幀,將所有 excel 工作表中的所有數據放在一個文件中。
到目前為止,我確實為每個站復制並粘貼它並手動更改站號。 有沒有辦法提高效率?
您可以使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.