昨天開始進入資料清理的部分,先處理了缺失值。今天則繼續處理前幾天檢查出來的「資料格式不一致」問題。
同一種資料如果有不同的表示方式,之後在進行搜尋、統計或分析時可能會造成問題。因此今天希望讓系統可以將不同的格式自動轉換成統一的格式。
這次主要處理兩種資料:
if ($row[2] === '男性' || $row[2] === 'M') {
$consistencyCount++;
$affectedPatients[$row[0]] = true;
echo '【格式不一致】' . $row[0]
. ' → gender = ' . $row[2]
. ' → 建議修正為:男<br>';
$cleanedRow[2] = '男'; }
這樣當系統遇到「男性」或「M」時,就會在清理後的資料中統一改成「男」。
二、處理日期格式
目前 P009 的日期是:2026/09/05
而其他資料使用的是:2026-09-05
因此今天也讓程式將日期統一成YYYY-MM-DD的格式。
在原本的程式會先判斷日期是否使用 /加入把標準化後的日期放進清理後資料:
if ($row[8] !== ''
&& preg_match('/^\d{4}\/\d{2}\/\d{2}$/', $row[8])) { $consistencyCount++;
$affectedPatients[$row[0]] = true;
$standardDate = str_replace('/', '-', $row[8]);
echo '【格式不一致】' . $row[0]
. ' → visit_date = ' . $row[8]
. ' → 建議修正為:' . $standardDate . '<br>';
$cleanedRow[8] = $standardDate; }
這次清理資料時沒有直接修改原本的$row而是修改$cleanedRow是因為這樣可以保留原始資料,另外建立一份清理後的資料。
之後如果要做「清理前/清理後」的比較功能就可以直接比較兩份資料。
四、執行結果
重新整理網頁後原本的問題仍會被列出:
【格式不一致】P003 → gender = 男性 → 建議修正為:男 【格式不一致】P004 → gender = M → 建議修正為:男 【格式不一致】P009 → visit_date = 2026/09/05 → 建議修正為:2026-09-05
這是因為系統仍然需要讓使用者知道原始資料存在什麼問題。但在下面的「清理後資料愈爛中」就會變成不會顯示建議修正的訊息,直接顯示修正後的樣子。