Google 表單單選方格量表題匯出後:欄名很長、值不是數字,怎麼處理?

問卷
資料清理
Google 表單
R
Google 表單的「單選方格」是量表題最常用的題型,匯出到 Sheets 之後,每個子題各占一欄,欄名長成「原題 [子題]」,值也是「5 非常重要」的字串。這篇先講在 Google Sheets 裡怎麼直接處理,最後補上 R 的做法。
發佈於

2026年9月11日

Google 表單裡最適合做量表題(Likert scale)的題型是「單選方格」。填答者看起來乾淨易懂——一次列好幾個子題、每個子題選一個答案:

Google 表單的單選方格題型,一次列五個子題、每個選 1–5 分

但匯出到 Google Sheets 之後,會發現每個子題都變成一欄,欄名長成這樣:

匯出後 Google Sheets 的欄名:「原題 [子題]」格式,題目全文重複五次

資料會有一整排的「請評估下列工作特質對你的重要程度 [薪水]」——題目全文重複五次,只有中括號裡的子題不一樣。

這樣的資料有兩個問題

拿到這樣的 Sheet,通常會遇到兩件麻煩事:

  1. 欄名超長——樞紐分析、畫圖時,標籤擠成一團,X 軸、圖例都變得很難看
  2. 值是「5 非常重要」字串、不是數字——直接統計,例如算平均數, =AVERAGE(...) 會回傳 0 或錯誤,因為 Google Sheets 把整欄當成文字

要能算平均、畫長條圖,這兩件都得先處理。

用 Google Sheets 直接處理

步驟一:把欄名改成「工作特質_薪水」這種格式

Ctrl+H(Mac 是 Cmd+Shift+H)打開「尋找及取代」對話框,做兩次:

第一次——把問題題目全文換成短前綴:

  • 尋找請評估下列工作特質對你的重要程度 [
  • 取代為工作特質_
  • 搜尋範圍:選「特定範圍」→ 填第一列的欄名區間,例如 B1:F1
  • 按「全部取代」

第二次——把右邊的中括號拿掉:

  • 尋找]
  • 取代為:留空
  • 搜尋範圍:一樣 B1:F1

第一列的欄名就變成 工作特質_薪水工作特質_彈性時間工作特質_成就感工作特質_同事關係工作特質_學習機會

提示

為什麼取這種名字,不是直接叫「薪水」就好?

這是處理問卷資料的建議方法——題幹主題 + 底線 + 子題

  • 前綴保留脈絡:光看「薪水」不知道問的是重要程度、還是滿意度、還是月薪;工作特質_薪水 一看就懂

  • 多個矩陣題不會衝突:如果之後加另一題組「工作滿意度」,欄名就是 「工作滿意度_薪水」——選欄位、篩選時,工作特質_ 是在問重要程度的題組,工作滿意度_ 就是在問滿意度的題組,一目了然

  • 中文直接讀:不用背 imp_salarysat_salary 這種英文縮寫

步驟二:把值轉成數字

Google Sheets 有 REGEXEXTRACT 函數,直接抓字串開頭的數字。在旁邊的空欄建一組新欄位(保留原欄可以查證):

假設「工作特質_薪水」欄在 B 欄、資料從第 2 列開始,在 H 欄第 2 列填:

=IF(B2="", "", VALUE(REGEXEXTRACT(B2, "^\d+")))

拖曳往下複製到全部資料列。其他四欄(彈性時間、成就感…)在 I、J、K、L 欄同樣做一次。

想要一個公式做完整欄,可以在 H2 用 ARRAYFORMULA

=ARRAYFORMULA(IF(B2:B="", "", VALUE(REGEXEXTRACT(B2:B, "^\d+"))))

拉出來就是純數字:5、4、5、3、5……

註釋

Excel 用戶:Excel 365 也有 REGEXEXTRACT,用法一樣。舊版沒有的話,用 =VALUE(LEFT(B2, 1)) 抽第一個字——這招只適用 1–9 分量表。

步驟三:算描述統計、畫圖

值變成數字之後,就可以進行統計計算了:

  • 平均=AVERAGE(H2:H6)
  • 標準差=STDEV(H2:H6)
  • 各分數的人數=COUNTIF(H2:H100, 5)

或者選整個數字區塊 → 選單「插入 → 圖表」,直接畫長條圖看子題平均:

=AVERAGE(H2:H100)   # 工作特質_薪水 平均
=AVERAGE(I2:I100)   # 工作特質_彈性時間 平均
...

把五個平均值選起來、插入長條圖,就有一張「哪個工作特質最被重視」的排行圖。

什麼時候值得改用 R

在Google Sheets 用公式處理,比較適合一次性、資料量不大的分析。若是以下情境可能就比較不方便:

  • 資料量大:幾千筆以上,公式會卡;ARRAYFORMULA 也頂不住
  • 要跑統計:例如 t 檢定、ANOVA、因素分析、信度分析(Cronbach’s α)等等
  • 要重複跑很多次:每月、每季問卷收一批,同樣的清理流程要自動化
  • 要交接、要寫報告:Sheets 的公式散在各格,六個月後回來找不到;R 腳本一份文件從頭跑到尾

底下的 R 做法沿用同一套命名——工作特質_子題。中文變數名 R 也可以處理。在R有很多方法可以處理,各人有各人的愛好,在此僅為一種示例的方法。

用 R 處理

先讀進來:

library(googlesheets4)
library(dplyr)
library(stringr)

df <- read_sheet("你的 Sheet URL")
names(df)
#> [1] "時間戳記"
#> [2] "請評估下列工作特質對你的重要程度 [薪水]"
#> [3] "請評估下列工作特質對你的重要程度 [彈性時間]"
#> [4] "請評估下列工作特質對你的重要程度 [成就感]"
#> [5] "請評估下列工作特質對你的重要程度 [同事關係]"
#> [6] "請評估下列工作特質對你的重要程度 [學習機會]"

改欄名:一行 rename_with

rename_with() 搭配 str_extract() 抓中括號裡的子題名,再前綴加上「工作特質_」:

df <- df |>
  rename_with(
    ~ paste0("工作特質_", str_extract(., "(?<=\\[).+(?=\\])")),
    starts_with("請評估")
  )

names(df)
#> [1] "時間戳記" "工作特質_薪水" "工作特質_彈性時間"
#> [4] "工作特質_成就感" "工作特質_同事關係" "工作特質_學習機會"

starts_with("請評估") 只選這組欄,str_extract() 抓中括號裡的內容,paste0() 加前綴——一次完成,跟 Sheets 那邊的命名對得起來。

值轉數字

欄改好了,值還是字串:

df$`工作特質_薪水`
#> [1] "5 非常重要" "4 有點重要" "5 非常重要" "3 普通" "5 非常重要"

readr::parse_number() 抓字串裡第一個數字:

library(readr)

df <- df |>
  mutate(across(starts_with("工作特質_"), parse_number))

df$`工作特質_薪水`
#> [1] 5 4 5 3 5

描述統計、畫圖

library(tidyr)
library(ggplot2)

df |>
  summarise(across(starts_with("工作特質_"), \(x) mean(x, na.rm = TRUE))) |>
  pivot_longer(everything(), names_to = "item", values_to = "mean") |>
  mutate(item = str_remove(item, "^工作特質_")) |>
  ggplot(aes(x = mean, y = reorder(item, mean))) +
  geom_col() +
  labs(x = "平均重要程度", y = NULL)

各工作特質平均重要程度(1–5 分)

starts_with("工作特質_") 一次選出這組五欄;畫圖時把前綴拿掉,Y 軸標籤就是子題名。

相關

回到頂端