以下是完整的步驟,從資料讀取到摘要計算,並合併題目描述後保存為 Excel 檔案的整個流程: # 1. 安裝並載入必要套件 在 R 中安裝並載入處理數據和 Excel 的套件: ```r install.packages("readxl") install.packages("dplyr") install.packages("openxlsx") library(readxl) library(dplyr) library(openxlsx) ``` # 2. 讀取資料 從 Excel 文件中讀取 CY08MSP_CODEBOOK 和 TAP_SCH_2022_QQQ 兩個工作表: ```r # 設定檔案路徑 file_path <- "C:/Users/user/Downloads/test/TAP_SCH_2022_QQQ_combined.xlsx" # 讀取 CY08MSP_CODEBOOK 工作表(包含 NAME 和 VARLABEL) codebook <- read_excel(file_path, sheet = "CY08MSP_CODEBOOK") # 讀取 TAP_SCH_2022_QQQ 工作表(包含題目數據) data <- read_excel(file_path, sheet = "TAP_SCH_2022_QQQ") ``` # 3. 提取對應數據 根據 CY08MSP_CODEBOOK 中的 NAME 欄位,提取 TAP_SCH_2022_QQQ 中的數據: ```r # 提取 codebook 中的欄位名稱 selected_columns <- unique(codebook$NAME) # 從 TAP_SCH_2022_QQQ 中選擇匹配的欄位 filtered_data <- data %>% select(all_of(selected_columns)) ``` # 4. 計算摘要統計 對提取的數據進行摘要計算(如回答次數、平均值、最小值和最大值): ```r # 確保數據為數字類型 filtered_data <- filtered_data %>% mutate(across(everything(), as.numeric)) # 移除全是 NA 的欄位 filtered_data <- filtered_data %>% select(where(~ any(!is.na(.)))) # 計算摘要統計 summary_data <- filtered_data %>% summarise(across( everything(), list( Count = ~ sum(!is.na(.)), Mean = ~ mean(.x, na.rm = TRUE), Min = ~ min(.x, na.rm = TRUE), Max = ~ max(.x, na.rm = TRUE) ), .names = "{col}_{fn}" )) ``` # 5. 合併題目描述 將摘要結果與 CY08MSP_CODEBOOK 中的 VARLABEL 合併,並調整欄位順序將 VARLABEL 放在 NAME 旁邊: ```r # 將摘要結果轉換為長格式 summary_long <- summary_data %>% pivot_longer(cols = everything(), names_to = c("NAME", ".value"), names_sep = "_") # 合併題目描述 final_summary <- left_join(summary_long, codebook, by = "NAME") # 調整欄位順序,將 VARLABEL 放在 NAME 旁邊 final_summary <- final_summary %>% relocate(VARLABEL, .after = NAME) ``` # 6. 保存結果到 Excel 將合併後的結果保存為新的 Excel 文件: ```r # 設定輸出檔案路徑 output_path <- "C:/Users/user/Downloads/test/final_summary_with_labels.xlsx" # 保存到 Excel 文件 write.xlsx(final_summary, output_path, rowNames = FALSE) # 提示完成 cat("最終摘要結果已成功保存至:", output_path, "\n") ```