高點研究所
首頁商研所許誠哲 利用 R 語言利用條件判斷式過濾資料
篇名
利用 R 語言利用條件判斷式過濾資料
作者
許誠哲
說明
發佈時間:20231009

統計軟體或者程式語言的一個重要功能,是在重複性高的動作中,利用電腦的高速運算取代人力計算,無論在速度或者是正確度上都會有較佳的表現。在本次專欄中,我將介紹利用 R 語言進行資料處理時常用的指令,grepl 。

舉例來說,若以下為幾筆收集到的資料

資料的第一直行為樣本的姓名,第二直行為性別,第三直行為居住地。若想要過濾資料中,性別為男性或者女性的指令,可利用以下指令

其中 data[,2] == “男” 是一個條件判斷式,判斷第二直行(性別)中為”男”的資料。True 表示符合,False 表示不符合,而再利用 data[data[,2]==男,] 可進一步的過濾出資料中滿足判斷式為 True 的列形成的資料。

若想過濾出居住地在新竹以北的資料,可利用以下指令。

其中 | 指令表示或 (or),因此 data[,3]==”台北市”|data[,3]==”新北市” 表示判斷資料中的第三直行是否為台北市或者新北市。而 grepl 是條件判斷的延伸,相較於直接使用 == 判斷,grepl 的好處是不需要打出台北市的全名,只需打出台北,grepl 可以判斷資料中是否包含給定的條件。grepl("台北|新北|桃園|新竹",data[,3]) 即為判斷資料中的第三行是否包含台北、新北、桃園或者新竹。
可以看到相較於 ==, 指令 grepl 在撰寫時有較高的效率。

最後,如果過濾出姓氏為陳姓的資料,則可利用以下指令:

可以看出第一個指令直接過濾姓名中有「陳」的方式是不正確的,因為可能判斷到名字中包含陳的資料。因此在判斷條件的陳前面加上 ^, 其中 ^ 的意思是資料的字首, 因此 grepl(“^陳”, data[,1]) 表示過濾出資料第一直行(姓名)的字首為陳的資料, 即為姓名為陳的資料。

關鍵詞
程式語言、資料處理、grepl、過濾姓名
刊名
商研所許誠哲