iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

新手 R 語言學習紀錄系列 第 8

Day 8- R語言 缺失數據(遺漏值)

  • 分享至 

  • xImage
  •  

(前言:那個,由於本人不是專業的程式設計師,寫的內容可能不是很正確,還請大家多多包含/指教 :D)

前面提到,在R語言中,邏輯資料有主要有三種:TRUE/FALSE/NA。今天要學的是**NA (Not available)**的部分,也就是缺失數據(統計學上又稱作「遺落值」)。

在R 語言裡,向量的某一個數值可以為NA,也就是缺失數據,寫法跟向量沒有什麼不同,只是把值寫成NA就好了。例:c(102, NA, 43)。有缺失值的向量也可以做四則運算,只是有NA的地方,輸出也會是NA。(一個你餵什麼他吃什麼的概念XDD )

NA值要做檢定時,可以用is.na函數對值進行邏輯檢查。若結果出現TRUE表示該值為NA,FALSE則表示該值不是NA。下面我寫了一個簡單的程式來試試看
https://ithelp.ithome.com.tw/upload/images/20190924/20120887AvAtqfGG1S.png

執行結果如下:
https://ithelp.ithome.com.tw/upload/images/20190924/20120887GfifOJT5ox.png
可以看到在NA出現的地方邏輯檢驗結果都是TRUE,如果是一個隨機值則是FALSE。

這時如果想要計算tr有多少個NA時,先將剛剛的is.na(tr)賦值到一個物件trna上,然後用sum函數計算,例:
https://ithelp.ithome.com.tw/upload/images/20190924/20120887BWr3BnJR9T.png

這個計算方法背後有一個大原則,就是R語言會將TRUE自動視為1,FALSE自動視為0。這時候用sum(trna)看的是整個trna的加總,也就代表trna裡面有43個1 (TRUE),換句話說,1被加了43次,所以得出來43是trna的TRUE總數。

除了NA之外,R的缺失數據還包含了NaN 及Inf兩種缺失數據。**NaN (Not a Number)**代表的是「非數字」,例如我們在console裡輸入 0 / 0(零除以零),R給出的結果會是 NaN。另外,Inf代表的是「無限大」(infinity),如果將兩個 無限大相減,得出來的結果會是NaN。


上一篇
Day 7- R語言 邏輯&字符向量
下一篇
Day 9- R語言 向量子集 (Subsetting vectors)
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言