前一天已經完成資料格式的檢查,今天繼續處理另一種常見的資料的問題:數值異常。
有些資料雖然格式正確但數值本身可能不合理。例如:年齡出現負數、或心跳數值明顯超出這次測試資料所設定的範圍。
一、設定數值檢查規則
這次先針對age和heart_rate進行檢查。
在這個專案中,先設定:
age:0~120
heart_rate:30~200
這些範圍是本次專案為了測試資料品質檢查功能所設定的規則,並不是醫療診斷標準。
二、使用PHP判斷數值
首先使用is_numeric()確認資料是不是數字。
如果是數字,再進一步判斷是否超出設定的範圍。
例如:
if (is_numeric($row[1])) {
if ($row[1] < 0 || $row[1] > 120) {
echo '數值異常:' . $row[0] . ' → age = ' . $row[1] . '<br>';
}
}
這樣可以避免像Day 8的abc被當成數值範圍問題,而是讓它維持由格式檢查處理。
三、檢查心跳數值
接著用同樣的方法檢查heart_rate:
if (is_numeric($row[6])) {
if ($row[6] < 30 || $row[6] > 200) {
echo '數值異常:' . $row[0] . ' → heart_rate = ' . $row[6] . '<br>';
}
}
四、實際檢查結果
執行程式後,成功找到兩筆異常資料:
數值異常:P007 → age = -5
數值異常:P008 → heart_rate = 999
P007 的年齡是-5,超出設定的範圍;P008 的心跳數值是 999,同樣超出了這次測試所設定的範圍。
至於P003的age=abc,這次沒有再次顯示,因為它不是數值格式的問題,而是在Day8已經被格式檢查抓出來了。