簡體   English   中英

R 中的多個 excel 張

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM