丁振軍
(遼寧省生態環境監測中心,遼寧沈陽 110161)
2018 年十三屆全國人大一次會議表決通過了關于國務院機構改革方案的決定。方案提出,原國土資源部的監督防止地下水污染職責劃轉到新組建的生態環境部。2019 年生態環境部、自然資源部、住房和城鄉建設部、水利部和農業農村部五部委聯合印發了《地下水污染防治實施方案》,要求建立全國地下水環境監測體系,2020 年底前整合建設項目環評要求設置的地下水污染跟蹤監測井、地下水型飲用水源開采井、土壤污染狀況詳查監測井、地下水基礎環境狀況調查評估監測井、《中華人民共和國水污染防治法》要求的污染源地下水水質監測井,完善地下水監測數據報送制度?!端廴痉乐涡袆佑媱潯罚ㄒ韵潞喎Q“水十條”)考核點位要求“十三五”期間考核《地下水質量標準》(GB/T 14848—93)中pH、氨氮等19 項指標,按綜合評價方法進行評價。而構建生態環境部門地下水監測網絡需按照《地下水質量標準》(GB/T 14848—2017)評價每個點位和指標的水質類別,最多需要評價93 項指標。生態環境部門地下水環境質量評價任務日益繁重,急需一種減輕簡單重復工作的方法,R 軟件不失為一個很好的選擇。
R 是Ross Ihaka 和Robert Gentleman 于1995 年開發的,起源于貝爾實驗室的S 語言。R 是一種為統計計算和繪圖而設計的語言和環境,是免費開源的數據分析軟件。它還是一個全面的統計研究平臺,提供了多種數據分析技術,幾乎任何類型的數據分析工作皆可在R 中完成,而且其還擁有頂尖的制圖功能。其擁有自己的代碼庫,CRAN(Comprehensive R Archive Network)是一個比較完善的R 包庫,用戶可以很容易為其貢獻代碼。R 包是一個包含R 函數、數據和編譯代碼的集合,R 包在R 中用一行代碼即可安裝,使用非常方便。由于其具有免費開源性,所以R 可以很快地從統計學家和數據科學家那里得到最新的統計模型,這是其他商業收費軟件無法比擬的[1]。
R 自帶的環境操作起來可能不是很方便,而RStudio 很好地解決了這個問題。RStudio 是R 的一個集成開發環境(IDE),它包含語法編輯器、控制臺、環境窗格、繪圖結果等,而且它還具有調試、可視化等功能。
R 可以在CRAN(cran.r-project.org)上免費下載,Linux,Mac OS X 和Windows 都有相應編譯好的版本,根據選擇平臺的安裝說明進行安裝即可[2],本文版本為version 4.0.0。RStudio 可在官方網站(www.rstudio.com)下載并安裝,本文版本為version 1.2.1335。因RStudio 是以R 為基礎的,所以在安裝RStudio 之前要先安裝R。
“水十條”地下水考核點位考核評價按照綜合評價法進行,參照《地下水質量標準》(GB/T 14848—93)指標包括pH、氨氮、硝酸鹽、亞硝酸鹽、揮發性酚類、氰化物、砷、汞、鉻(六價)、總硬度、鉛、氟化物、鎘、鐵、錳、溶解性總固體、高錳酸鹽指數、硫酸鹽、氯化物,共19 項,首先進行各單項組分的評價,劃分組分所屬質量類別,然后對各類別進行F 值賦分,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ類分別賦予0,1,3,6,10 分,然后再算出綜合評價分值F[3]。由于點位數量及考核指標眾多,如用人工劃分單項組分質量類別并進行賦分,時間成本巨大且易出錯,可以使用R 軟件進行質量類別的劃分和F 值的賦分。
4.1.1 數據的處理
應用R 進行質量類別的劃分和賦分時,需對數據進行整理,新建Excel 表并命名為“x1”,表中行為點位名稱,列為19 項考核指標名稱(無需考慮指標排列順序)。因在R 的函數中括號(())、逗號(,)和短橫杠(-)有其特殊功能,所以列名中指標名稱應刪除括號和逗號,短橫杠可以用下劃線(_)代替,以免發生錯誤。Excel 樣表模板見表1。

表1 Excel 樣表模板
4.1.2 數據的讀取
數據讀取可以使用RStudio 中的導入Excel 功能實現,操作如下:點擊“Import Dataset”→“From Excel”,在彈出的“Import Excel Data”窗口點擊“Browse”按鈕選擇所需的Excel 表,點擊“Import”按鈕完成數據的讀取。首次導入Excel 表時,RStudio 會自動安裝readxl 程序包。
監測的指標中除pH 外,其他指標均有可能出現小于檢出限的現象,數據報送時一般以“<檢出限”或“檢出限L”形式給出,在數據讀取“Import Excel Data”窗口界面時,可點擊指標名稱旁下拉箭頭,將小于檢出限的指標的數據類型由字符型(character)改為數值型(numeric),此時小于檢出限的單元格變為缺省值(NA)。其他無小于檢出限的指標默認數據類型為雙精度浮點型(double),無需修改。
4.1.3 R 代碼實現
R 軟件實現19 項指標綜合評價質量類別的劃分和F 值的賦分,可以使用基礎包(base)中的cut()函數進行區間劃分,代碼根據指標分為2 類。第一類為pH,pH 6.5~8.5 為Ⅰ類水質,賦0 分,超出這個范圍水質類別為Ⅳ類或Ⅴ類,賦6 分或10 分。故pH指標R 代碼如下:
#1pH
>breakpH <- c(0,5.49,6.49,8.5,9,14)
>labelspH =c(10,6,0,6,10)
其他18 項指標為第二類,以氨氮和硝酸鹽為例,其余可據此修改。R 代碼如下:
#2 氨氮
>break 氨氮<- c(0,0.02,0.2,0.5,Inf)
>labels 氨氮=c(0,3,6,10)
#3 硝酸鹽
>break 硝酸鹽<- c(0,2,5,20,30,Inf)
>labels 硝酸鹽=c(0,1,3,6,10)
19 項指標依次進行區間劃分并賦分后,在RStudio 默認路徑下新建csv 文件x2,在19 項指標后新增19 列賦分結果,并以“F 指標名稱”命名。R代碼如下:
>x2 <- cbind(x1,FpH,F 氨氮,F 硝酸鹽,F 亞硝酸鹽,F 揮發性酚類,F 氰化物,F 砷,F 汞,F 鉻六價,F 總硬度,F 鉛,F 氟化物,F 鎘,F 鐵,F 錳,F 溶解性總固體,F 高錳酸鹽指數,F 硫酸鹽,F 氯化物)
>write.table(x2,file ="地下水分級賦分1993.csv",sep=",",row.names=F)
查詢RStudio 默認路徑可以使用getwd()命令,更改默認路徑可以使用setwd("路徑名")命令。csv文件可以使用Excel 打開或另存為Excel 文件。x1 表中小于檢出限的單元格即缺省值(NA),在x2 表中新生成的“F 指標名稱”列仍為字符NA,可在Excel中整體將新生成列中NA 替換為0,即Ⅰ類水質對應的F 值。
地下水試點監測與例行監測評價時,使用的標準為《地下水質量標準》(GB/T 14848—2017),指標包括其表1 中感官性狀及化學指標、微生物指標、毒理學指標、放射性指標39 項,以及其表2 中毒理學指標54 項,共93 項指標[4]。Excel 表的新建與命名、數據的處理和讀取都可以參考地下水考核點位評價操作。
93 項指標的R 代碼實現根據指標分為4 類,第一類為pH,R 代碼與地下水考核點位評價相同。第二類為嗅和味、肉眼可見物2 項指標,因其評價標準為“有”或“無”,為字符型變量(character),在數據處理時不要將其更改為數值型變量(numeric)。對這2項指標的評價可以使用R 基礎包中gsub()函數實現。R 代碼如下:
#2 嗅和味
>L 嗅和味<- gsub("無","1",L 嗅和味)
#4 肉眼可見物
>L 肉眼可見物<- gsub("無","Ⅰ",L 肉眼可見物)
第三類為以數字開頭的指標,如“2,4-滴”。在數據處理時,名稱中的逗號和短橫杠均已被處理,其名稱已變為“24_滴”。這類以數字開頭的指標,在進行引用的時候應以[[""]]代替美元符號,以2,4-二硝基甲苯和2,4-滴為例,R 代碼如下:
#28 2,4-二硝基甲苯
>break24_ 二硝基甲苯<- c(0,0.1,0.5,5,60,Inf)
>labels24_二硝基甲苯=c(1,2,3,4,5)
>L24_ 二硝基甲苯<- cu(tx1[["24_ 二硝基甲苯"]],break24_二硝基甲苯,labels24_二硝基甲苯,include.lowest =T)
#44 2,4-滴
>break24_滴<- c(0,0.1,6,30,150,Inf)
>labels24_滴=c(1,2,3,4,5)
>L24_滴<- cu(tx1[["24_滴"]],break24_滴,labels24_滴,include.lowest =T)
第四類為其他指標,R 代碼與地下水考核點位評價第二類相似,可參照編寫。93 項指標依次進行區間劃分后,在RStudio 默認路徑下新建csv 文件x2,在93 項指標后新增93 列質量等級劃分結果,并以“L 指標名稱”命名。R 代碼如下:
>x2<- cbind(x1,L 色,L 嗅和味,L 渾濁度,L 肉眼可見物,LpH,L 總硬度,L 溶解性總固體,L 硫酸鹽,L 氯化物,L 鐵,L 錳,L 銅,L 鋅,L 鋁,L 揮發性酚類,L 陰離子表面活性劑,L 耗氧量,L 氨氮,L 硫化物,L 鈉,L 總大腸菌群,L 菌落總數,L 亞硝酸鹽,L 硝酸鹽,L 氰化物,L 氟化物,L 碘化物,L 汞,L 砷,L 硒,L 鎘,L 鉻,L 鉛,L 三氯甲烷,L 四氯化碳,L 苯,L 甲苯,L 總α 放射性,L 總β 放射性,L 鈹,L 硼,L 銻,L 鋇,L 鎳,L 鈷,L 鉬,L 銀,L 鉈,L 二氯甲烷,L12_二氯乙烷,L111_ 三氯乙烷,L112_ 三氯乙烷,L12_二氯丙烷,L 三溴甲烷,L 氯乙烯,L11_二氯乙烯,L12_ 二氯乙烯,L 三氯乙烯,L 四氯乙烯,L 氯苯,L 鄰二氯苯,L 對二氯苯,L 三氯苯,L 乙苯,L 二甲苯,L 苯乙烯,L24_ 二硝基甲苯,L26_ 二硝基甲苯,L 萘,L 蒽,L 熒蒽,L 苯并b 熒蒽,L 苯并a 芘,L多氯聯苯,L 鄰苯二甲酸二2_乙基己基酯,L246_三氯酚,L 五氯酚,L 六六六,Lγ_六六六,L 滴滴涕,L 六氯苯,L 七氯,L24_滴,L 克百威,L 涕滅威,L 敵敵畏,L 甲基對硫磷,L 馬拉硫磷,L 樂果,L 毒死蜱,L 百菌清,L 莠去津,L 草甘膦)
>write.table(x2,file ="地下水分級打分2017.csv",sep=",",row.names=F)
查詢RStudio 默認路徑可以使用getwd()命令,更改默認路徑可以使用setwd("路徑名")命令。csv文件可以使用Excel 打開或另存為Excel 文件。x1 表中小于檢出限的單元格即缺省值(NA),在x2 表中新生成的“L 指標名稱”列仍為字符NA,可在Excel 中整體將新生成列中NA 替換為Ⅰ,其他新生成列中水質質量類別由1,2,3,4,5 替換為Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ。
在地下水考核點位、試點監測和例行監測評價時,應用事先寫好的R 代碼可以實現質量等級劃分和F 值的賦分,而且可以忽略原始數據表格中指標的順序,自動提取對應的指標列,并按指定順序輸出結果。整個過程迅速且不出錯,極大地節約了人力及時間成本,且避免了人為判斷失誤。此方法也可擴展至地表水單項評價或其他類似的評價工作中。