[英]Use of na.rm=True and na.action=na.pass in aggregate() - difference?
我在 Stack Overflow 上找不到已經回答了我的問題的問題,所以很抱歉,如果已經有人問過這個問題而我只是找不到它。
總而言之,這個問題更多是關於根據我使用的代碼了解我的數據會發生什么。
所以,我有一個數據集,里面有幾個 NA。
我想匯總數據並使用na.rm=True
告訴 R 在計算時忽略 NA,對嗎? 我收到的 output 包括 NA,這導致我使用 function na.action=na.pass
和na.rm=True
。 這讓我的 output 中的 NA 明顯減少。 老實說,我不明白為什么...
因為我喜歡自己嘗試並找出答案,所以我查看了我的聚合 function 的不同變體:
na.rm=True
na.action=na.pass
na.rm=True
, na.action=na.pass
只使用 2。我得到了很多 NA,這是有道理的,因為我告訴 R 將所有 NA 包括在計算中,而沒有na.rm=True
。 同時 1. 和 3. 不要給我相同的結果。 這是為什么?
我認為這兩個na.rm=True
和na.action=na.pass
意味着同樣的事情......顯然他們沒有,因為我的變量平均值略有不同。
與僅使用na.rm=True
相比,當我在聚合 function 中同時使用 na.rm=True 和na.action=na.pass
時,我的數據會發生什么。 哪個更好用?
非常感謝,感謝您的幫助!
讓我們舉一個簡單的例子來理解這一點:
df <- data.frame(a = c(2, 2, 1, 3, NA, NA), b = c(1, 1, 1, 2, 2, 3))
df
# a b
#1 2 1
#2 2 1
#3 1 1
#4 3 2
#5 NA 2
#6 NA 3
aggregate
與sum
一起使用。aggregate(a~b, df, sum)
# b a
#1 1 5
#2 2 3
請注意,output 中沒有b = 3
行。 b = 2
也有 1 個NA
值,但我們返回 output 的 3 而沒有添加na.rm = TRUE
。 這意味着默認情況下,計算時會刪除所有NA
值。
na.action = 'na.pass'
。aggregate(a~b, df, sum, na.action = 'na.pass')
# b a
#1 1 5
#2 2 NA
#3 3 NA
通過指定na.action = na.pass
,我們要求它包含所有NA
值。 因此,我們現在有一行b = 3
和b = 2
是NA
因為我們沒有包括na.rm = TRUE
。
na.rm = TRUE
。aggregate(a~b, df, sum, na.rm = TRUE, na.action = 'na.pass')
# b a
#1 1 5
#2 2 3
#3 3 0
我認為 output 應該是不言自明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.