簡體   English   中英

xtabs 用 NA 和 na.action = na.pass 在 R 中計數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM