本部分預計時間:20 分鐘
在第一部分,你已經成功畫出第一張圖、認識了套件、安裝了工具。現在我們要學會讀取自己的資料。
我有一個 CSV 檔案叫做 patient_data.csv,放在我的專案資料夾裡,欄位有 patient_id、treatment、age、gender、los。請幫我一次完成:
用 read.csv() 讀取這個檔案,存成 patient_data
用 head() 顯示前 6 筆資料
用 dim() 看幾列幾欄、str() 看資料結構、summary() 看基本統計
用 skimr 的 skim() 產生更詳細的摘要
檢查有沒有遺漏值(colSums(is.na(...)))
用白話文解讀每個欄位的分佈和需要注意的地方
給我可以從頭跑到尾的完整程式碼,加上中文註解。
本課程的範例資料 patient_data.csv 已包含在課程資料夾中。如果你是用 Posit.cloud,請先將檔案上傳到你的專案中。
任務 6:讀取 CSV 檔案
📋 複製這段話,貼給 AI:
我有一個 CSV 檔案叫做 patient_data.csv,放在我的專案資料夾裡。請告訴我:
怎麼讀取這個檔案到 R 裡面
怎麼看前幾筆資料確認有讀成功
請給我可以直接執行的程式碼。
也可以用套件 googlesheets4 的 read_sheet() 直接從 Google 試算表讀取資料。
讀取資料
# 讀取 CSV 檔案
patient_data <- read.csv ("patient_data.csv" )
# 顯示前 6 筆資料
head (patient_data)
patient_id treatment age gender los
1 1 A 45 M 5
2 2 B 52 F 8
3 3 A 38 M 4
4 4 B 61 F 12
5 5 A 55 F 6
6 6 B 42 M 9
任務 7:認識你的資料
📋 複製這段話,貼給 AI:
我已經把資料讀進來了,存在一個叫做 patient_data 的變數。請給我程式碼,讓我可以:
看這個資料有幾列幾欄
看每個欄位的基本統計(平均、最大、最小等)
看每個欄位是什麼資料類型(數字、文字等)
用 skimr 跟 summary 顯示分析結果
探索資料
# 載入 skimr 套件
library (skimr)
# 查看資料維度(幾列幾欄)
dim (patient_data)
# 查看資料結構
str (patient_data)
'data.frame': 100 obs. of 5 variables:
$ patient_id: int 1 2 3 4 5 6 7 8 9 10 ...
$ treatment : chr "A" "B" "A" "B" ...
$ age : int 45 52 38 61 55 42 49 58 36 64 ...
$ gender : chr "M" "F" "M" "F" ...
$ los : int 5 8 4 12 6 9 5 11 3 14 ...
# 查看基本統計摘要
summary (patient_data)
patient_id treatment age gender
Min. : 1.00 Length:100 Min. :35.00 Length:100
1st Qu.: 25.75 Class :character 1st Qu.:41.00 Class :character
Median : 50.50 Mode :character Median :49.00 Mode :character
Mean : 50.50 Mean :48.77
3rd Qu.: 75.25 3rd Qu.:56.00
Max. :100.00 Max. :64.00
los
Min. : 3.00
1st Qu.: 5.00
Median : 7.50
Mean : 8.07
3rd Qu.:11.00
Max. :17.00
# 使用 skimr 產生更詳細的摘要
skim (patient_data)
Data summary
Name
patient_data
Number of rows
100
Number of columns
5
_______________________
Column type frequency:
character
2
numeric
3
________________________
Group variables
None
Variable type: character
treatment
0
1
1
1
0
2
0
gender
0
1
1
1
0
2
0
Variable type: numeric
patient_id
0
1
50.50
29.01
1
25.75
50.5
75.25
100
▇▇▇▇▇
age
0
1
48.77
8.43
35
41.00
49.0
56.00
64
▇▇▆▇▆
los
0
1
8.07
3.95
3
5.00
7.5
11.00
17
▇▃▅▃▁
任務 8:理解你看到的東西
📋 把 summary(patient_data) 的輸出複製起來,加上這段話貼給 AI:
這是我的資料摘要,請幫我解讀每個欄位的意義,以及有沒有什麼需要注意的地方(例如遺漏值、異常值): 【貼上 summary 輸出】
資料摘要解讀
從 summary() 的輸出,我們可以看到:
patient_id : 病人編號,從 1 到 100
treatment : 治療組別,A 組和 B 組各 50 人
age : 年齡分佈,平均約 47 歲
gender : 性別分佈,男女各半
los : 住院天數,平均約 8 天,B 組似乎住院天數較長
檢查遺漏值
# 檢查是否有遺漏值
sum (is.na (patient_data))
# 查看每個欄位的遺漏值數量
colSums (is.na (patient_data))
patient_id treatment age gender los
0 0 0 0 0