撰稿人 陳志毅
前言
為改善二品種或三品種土番鴨因屬間雜交導致受精率並不高,且會增加投入勞力的成本的產業問題,擬藉由遺傳育種理論與混合模式之應用,設計以系譜選育的方式,來延長北京鴨受精持續性,以改進北京鴨受精持續性並建立受精持續性高新品種。資料收集主要為北京鴨受精持續性相關性狀如受精蛋數、最長受精日或有效受精日數等性狀紀錄,資料收集時間自95年的第1代至105年的第10代性狀紀錄,而這些紀錄在進行資料編輯的階段,會發現有資料部分重複需要篩選保留等問題需編輯校正,以求得資料正確性與整齊度,避免將來送至遺傳變方估計進行資料分析時,造成錯誤而無法產生正確結果。本文主要探討來自以Excel建立之201長受精持續性北京鴨品系的基礎系譜性能結合檔,在資料編輯時所發現的問題,以及如何運用 Excel 函數與資料排序等綜和應用來提昇資料的正確度。
資料合併之格式標準化
以 「L201-95105-g1827-標準化資料.XLS」檔案,作為建立長受精持續性北京鴨 L201品系之系譜性能資料檔,欄位資訊包括鴨腳號、父籠號、母籠號、出生日期、性別、品系、批次、鴨籠號與29、32、35週齡分別之總蛋數、受精蛋數、最長受精日、有效受精日數、中止數、胚死亡數等性狀,共26個欄位。資料建立年度分別為95、96、98、99、100、101、102、103、104與105,對應代數分別為第1世代至第10世代,其中,第1世代至第4世代的資料布建是系譜資料與性能資料分別新增鍵入方式,與其後第5至第10世代的系譜性能建立的方式並不相同,在進行資料合併與標準化的同時,可能導致VCE前置檔案系譜檔產生的連結錯誤,因此前面4代的資料必須進行標準化,讓10個世代的資料格式趨於一致。
預設要標示刪除的重複資料的特殊排序
觀察第1至第4代重複資料發現,若有兩筆具有相同的鴨隻腳號 (蹼上剪洞的身分識別號碼),其中一筆的性狀資料無內容,顯然僅是紀載系譜使用,另一筆資料雖有檢定週齡的性狀資料,但可能29、32與35週僅有一週有紀錄或三週全有紀錄,屬於部分欄位重複的重複資料型態,這可能源於現場資料收集的困境,而無法達到完整的紀錄,因此若想過濾無性狀資料的紀錄,必須同時考量前述狀況,即先依據鴨隻腳號作第一階層排序,依序再以29、32與35週的第1個欄位性狀 (受精蛋數) 做第2、3、4階層排序,如此,當兩筆腳號相同的資料出現時,帶有系譜及性狀資料的紀錄會排在前面,僅帶有系譜無性狀資料的紀錄變緊排列於後,預設這樣的排序方式是有其目的,主要在鋪陳稍後使用的函數在辨識無重複紀錄與有重複但要刪除的紀錄等這兩種型態紀錄時,可以進行有效的區隔。
以countifs() 函數方式產生識別標示
為有效刪除重複部分欄位的紀錄,在進行前述的階層排序後,我們在資料的第1欄 (A欄) 插入要作為標示重複部分欄位資料的識別欄,然後採用 countifs()函數來進行資料處理,此函數原來的作用準則係套用於跨多個範圍的儲存格區間,並計算所有準則或限定的條件均符合的次數或個數,其函數的定義為 countifs(criteria_rang1,criteria1,...),該函數當中的第1項參數 「criteria_range1」 ,是表示要在其中估算關聯準則的第一個範圍,第2項參數「criteria1」 為準則形式,表示可以採數字、運算式、儲存格參照,或定義要計算之儲存格的文字,通常 countifs() 函數應用在計算符合定義條件內的個數相當有用,例如countifs('L201'!$F$2:$F$100,1,'L201'!$N$2:$N$100,"北京鴨"),假設有1個「L201」的工作檔內所建立95年的鴨隻性狀工作表「95」,F欄 (性別) 有「1」(公) 與 「2」(母) 兩種,N欄 (鴨品種) 有「北京鴨」與「白色番鴨」等2種,則前述函數的計算意義為:可得到「L201」內工作表F欄 (性別) 為「公」且N欄 (鴨品種)為「北京鴨」的個數有多少。
但在此我們將其進行功能性轉換應用,在 L201-95105-g1827.XLS 檔的第1代 「95年過濾範例」工作表內,B欄為鴨腳號,我們在A欄的A2儲存格內鍵入「=countifs($b$1:b1,b1)」,因為B2儲存格為「180005」,本函數的計算意義即為,從固定參照B2儲存格至變動參照B2儲存格的範圍內,符合「180005」的個數有幾個? 得到函數計算結果僅為「1」個,往下複製公式,到了A3儲存格時,本函數的計算自固定參照B2儲存格至變動參照 B3儲存格的範圍內,符合「180006」的個數仍僅有1個,故得到函數計算結果為「1」,繼續往下複製公式,到了A4儲存格時,本函數的計算自固定參照 B2 儲存格至變動參照 B4儲存格的範圍內,符合「180006」的個數已有2個「180006」,故函數計算結果為「2」。注意第3列I欄 (籠號) 之後的P欄 (32-Ie:32週齡入孵蛋數)、Q欄 (32-F:32週齡受精蛋數)、R欄 (32-Dm:32週齡最長受精天數)、S欄 (32-Ie:32週齡有效受精蛋數)、T欄 (32-Me:32週齡早期胚胎死亡數)、U欄 (32-Ml:32週齡晚期胚胎死亡數) 分別有性狀紀錄資料14、4、4、4、1、3,而第4列的I欄之後所有性狀紀錄資料為空值,兩筆鴨腳號皆為「180006」的重複紀錄,有性狀紀錄的第3列資料,A欄標示為「1」,無性狀紀錄的第4列資料,A欄標示為「2」,若公式繼續往下複製,我們可以發現,沒有重複紀錄與有重複紀錄但有性狀資料者,A欄對應儲存格都被標示為「1」,這些都是我們需要保留的唯一紀錄,而有重複紀錄但無性狀資料者則都被標示為「2」,這樣我們就可以清楚的辨識哪些是我們要去除的重複性資料了(圖1)。
圖1. 透過前置排序配合countifs () 函數產生識別標示篩選重複紀錄提升資料正確度。
筆者簡單整理前述資料編輯流程如下:
1. 先以 B欄 (腳號)、J欄 (29週受精蛋數)、P欄 (32週受精蛋數) 與V欄 (35週受精蛋數) 進行階層升冪排序。
2. A1=countifs($b$1:b1,b1) 可以判定腳號重覆的個數 公式複製到底。
3. 再依據 B 欄進行排序 可以看出 A 欄顯示 重複數的數字。
4. 「1」表示未重複 或者是 有重複但帶有性能資料 必須留下。
5. 新增 A 一欄 將原 countifs($b$1:b1,b1) 以選擇性貼上值方式貼入 A 欄。
6. 依據 A 欄進行降冪排序 數位為 「2」 者 將會排在前方 表過濾出要刪的資料。
以排序特定標示篩除重複紀錄
由於「L201」的工作檔內的「95」工作表中,A欄所已採用的countifs()函數,成功的辨識出帶有重複鴨腳號,且無性狀資料的紀錄,並標示為「2」,以下我們便可依據A欄進行升冪排序,可以發現自232比後面的104筆都是標示為「2」的紀錄,佔總數335筆的31%,我們將這段的紀錄刪除後,剩餘的221筆紀錄便是95年中唯一的鴨腳資料,接著,我們可以依照鴨腳號進行升冪排序,並依此為樣板,標準化96年至105年共9個年度的L201北京鴨長受精持續性的性狀資料。
結論
資料編輯可說是資料分析最重要的一環,經過前述 countifs() 函數辨識並刪除重複資料後,可以將標準化後的資料分別填入已編輯好的L201-G1827-ped 與L201-G1827-dat的2個SAS程式中,分別對應放置在各年度的「dataline」至「:」的指令敘述範圍,這兩個peg1827-ped與peg1827-dat檔案,是分別產生在估計L201北京鴨長受精持續性檢定性狀的變方共變方成分分析軟體 (VCE6) 的系譜資料檔與性能資料檔的兩個重要成分檔案,配合peg1827-par的參數檔,便可在 VCE6 分析模組中進行長受精持續性檢定性狀的累加性遺傳變方、環境變方、收斂後之機差與個性狀之間的遺傳相關等遺傳參數了,因此必須再強調的是,若重複資料的情況若未經篩選,則產生的系譜檔也會產生重複的編號現象,當進入VCE在進行估計時,其系譜演算連結會發生錯誤,矩陣運算也會因此失誤而無法估計導致計算中斷的現象。