以下是完整的步驟,從資料讀取到摘要計算,並合併題目描述後保存為 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")
```