[英]xtabs counts with NA and na.action = na.pass in R
我有以下data.frame
:
x <- data.frame(A = c("Y", "Y", "Z", NA),
B = c(NA, TRUE, FALSE, TRUE),
C = c(TRUE, TRUE, NA, FALSE))
我需要計算下表:
A B C
Y 1 2
Z 0 0
<NA> 1 0
但是,即使使用na.action = na.pass
,我也無法使用xtabs
實現此結果:
xtabs(formula = cbind(B, C) ~ A,
data = x,
addNA = TRUE,
na.action = na.pass)
A B C
Y 2
Z 0
<NA> 1 0
從?xtabs
:
行動
一個函數,指示當數據包含 NA 時應該發生什么。 如果未指定,並且 addNA 為 true,則將其設置為 na.pass。 當它是 na.pass 並且公式具有左側(帶計數)時,使用 sum(*, na.rm = TRUE) 代替 sum(*) 來計算計數。添加NA
邏輯指示 NA 是否應該獲得單獨的級別並進行計數,使用 addNA(*, ifany=TRUE) 並設置 na.action 的默認值。
作為一種解決方法,我可以用FALSE
替換NA
:
x[is.na(x$B), "B"] <- FALSE
x[is.na(x$C), "C"] <- FALSE
xtabs(formula = cbind(B, C) ~ A,
data = x,
addNA = TRUE)
A B C
Y 1 2
Z 0 0
<NA> 1 0
或者我可以使用聚合:
aggregate(formula = cbind(B, C) ~ addNA(A),
data = x,
FUN = sum,
na.rm = TRUE,
na.action = na.pass)
addNA(A) B C
1 Y 1 2
2 Z 0 0
3 <NA> 1 0
但是如何在不將NA
替換為FALSE
情況下使用xtabs
獲取此表?
將na.action=na.pass
更改為na.action=NULL
。
xtabs(formula = cbind(B, C) ~ A,
data = x,
addNA = TRUE,
na.action = NULL)
A B C
Y 1 2
Z 0 0
<NA> 1 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.