讀取大量xlsx檔與迴圈運行建議

46 views
Skip to first unread message

Hui Alvis

unread,
Dec 10, 2022, 6:03:26 AM12/10/22
to R軟體使用者論壇
我剛開始學習使用R語言
目前正在使用r studio 裡面的 trend package 進行資料運算
總共要處理的xlsx檔有1417個,需要運算的欄位分別是'1','2','3','4','5','6','7','8','9','10','11','12'
目前還處在手動輸入的階段,因此想尋找更快捷的方法

library(trend)

library(readxl)
工作表x<- read_excel("ponintrain/工作表x.xlsx")     (x代表檔案編號)
View(工作表x)

mk.test(工作表x$`1`)

mk.test(工作表x$`2`)

mk.test(工作表x$`3`)

mk.test(工作表x$`4`)

mk.test(工作表x$`5`)

mk.test(工作表x$`6`)

mk.test(工作表x$`7`)

mk.test(工作表x$`8`)

mk.test(工作表x$`9`)

mk.test(工作表x$`10`)

mk.test(工作表x$`11`)

mk.test(工作表x$`12`)


WEPA ^_^

unread,
Dec 31, 2022, 10:49:57 AM12/31/22
to R軟體使用者論壇
Hi friend,

HAPPY NEW YEAR 2023.

# Title: 讀取大量xlsx檔與迴圈運行建議
# Date: 2022.12.31

# 步驟1. 載入套件
library(trend)
library(writexl)
library(readxl)

# 步驟2. 模擬3個Excel檔案, 每個檔案有12個變數, 每個變數樣本數為100.
data(Nile)
ncolumns <- 12
nrows <- 100

# files: df_1.xlsx, df_2.xlsx, df_3.xlsx
for (i in 1:3) {
  df <- data.frame(matrix(sample(Nile, ncolumns*nrows, replace = TRUE), ncol = ncolumns))
  names(df) <- 1:12
  write_xlsx(x=df, path=paste0("df_", i, ".xlsx"))
}

# 步驟3. 匯入所有 Excel 檔案

# 取得所有檔案名稱
myfile <- list.files(pattern = "df_")

# 匯入所有工作表,並儲存為list資料物件
sheets <- excel_sheets(myfile)
dflist <- lapply(myfile, read_excel)
names(dflist) <- myfile
dflist

# 步驟4. 進行 mk.test

# 測試 df_1.xlsx 檔案中12個變數的mk.test
apply(dflist[[1]], 2, mk.test)

# 測試所有 Excel 檔案中12個變數的mk.test

mkdata <- list()
for (i in 1:length(dflist)) {
  mkdata[[i]] <- apply(dflist[[i]], 2, mk.test)
}
names(mkdata) <- myfile
mkdata

# 找出 p-value
mkdata[[1]]$`1`$p.value
mkdata[[1]]$`2`$p.value

# end

b665...@gmail.com 在 2022年12月10日 星期六晚上7:03:26 [UTC+8] 的信中寫道:

WEPA ^_^

unread,
Jan 5, 2023, 5:00:34 AM1/5/23
to R軟體使用者論壇
# 匯入所有工作表,並儲存為list資料物件
sheets <- excel_sheets(myfile)

# 本行僅測試取得工作表名稱, 應修正如下, 應可直接刪除.
sheets <- excel_sheets(myfile[1])
# end
WEPA ^_^ 在 2022年12月31日 星期六晚上11:49:57 [UTC+8] 的信中寫道:

WEPA ^_^

unread,
Jan 5, 2023, 10:25:28 AM1/5/23
to R軟體使用者論壇
參考以下YouTube 講解連結:
# end

WEPA ^_^ 在 2023年1月5日 星期四下午6:00:34 [UTC+8] 的信中寫道:
Reply all
Reply to author
Forward
0 new messages