table 位於 base 包(package)。 說明
table 使用交叉分類因子來構建每個因子級別組合的計數列聯表。
用法
table(...,
      exclude = if (useNA == "no") c(NA, NaN),
      useNA = c("no", "ifany", "always"),
      dnn = list.names(...), deparse.level = 1)
as.table(x, ...)
is.table(x)
## S3 method for class 'table'
as.data.frame(x, row.names = NULL, ...,
              responseName = "Freq", stringsAsFactors = TRUE,
              sep = "", base = list(LETTERS))
參數
| ... | 一個或多個可以被解釋為因子(包括數字或字符串)的對象,或者其組件可以被解釋為因子的 | 
| exclude | 要刪除  | 
| useNA | 是否在表中包含 | 
| dnn | 為結果中的維度指定的名稱(dimnames 名稱)。 | 
| deparse.level | 控製默認 | 
| x | 任意的R對象,或從類繼承的對象 | 
| row.names | 給出 DataFrame 的行名稱的字符向量。 | 
| responseName | 用於表條目列的名稱,通常是計數。 | 
| stringsAsFactors | 邏輯:分類因子應該作為因子(默認)還是字符向量返回? | 
| sep,base | 傳遞給 | 
細節
如果未提供參數 dnn,則調用內部函數 list.names 來計算“dimname 名稱”,如下所示: 如果 ... 是一個帶有自己的 names() 的 list,則使用這些 names 。否則,如果 ... 中的參數已命名,則使用這些名稱。對於其餘參數,deparse.level = 0 給出一個空名稱,deparse.level = 1 使用提供的參數(如果它是符號),deparse.level = 2 將解析該參數。
僅當指定 exclude(即非默認情況下)且非空時,table 才可能會降低因子參數的級別。
useNA 控製表是否包含 NA 值的計數:允許的值對應於從不 ( "no" ),僅當計數為正數 ( "ifany" ) 甚至零計數 ( "always" ) 時。請注意兩種不同類型的 NA 的 “pathological” 情況,它們的處理方式有所不同,具體取決於 useNA 和 exclude ,請參閱下麵“示例:”中的 d.patho。
exclude 和useNA 都在“all or none” 基礎上運行。如果要單獨控製多路表的維度,請使用 factor 或 addNA 修改每個參數。
非因子論證a被脅迫通過factor(a,
    exclude=exclude)。自從R3.4.0,小心不是計算排除的值(它們包含在NA計數,之前)。
類 "table" 的 summary 方法(用於由 table 或 xtabs 創建的對象)提供基本信息並執行因子獨立性的卡方檢驗(請注意,函數 chisq.test 目前僅處理二維表)。
值
table() 返回列聯表、"table" 類的對象、整數值數組。請注意,與 S 不同,結果始終是 array ,如果給出一個因子,則結果是一維數組。
as.table 和 is.table 分別強製和測試列聯表。
從類 "table" 繼承的對象的 as.data.frame 方法可用於將列聯表的基於數組的表示轉換為包含分類因子和相應條目的 DataFrame (後者作為由 responseName 命名的組件) 。這是 xtabs 的逆。
例子
require(stats) # for rpois and xtabs
## Simple frequency distribution
table(rpois(100, 5))
## Check the design:
with(warpbreaks, table(wool, tension))
table(state.division, state.region)
# simple two-way contingency table
with(airquality, table(cut(Temp, quantile(Temp)), Month))
a <- letters[1:3]
table(a, sample(a))                    # dnn is c("a", "")
table(a, sample(a), dnn = NULL)        # dimnames() have no names
table(a, sample(a), deparse.level = 0) # dnn is c("", "")
table(a, sample(a), deparse.level = 2) # dnn is c("a", "sample(a)")
## xtabs() <-> as.data.frame.table() :
UCBAdmissions ## already a contingency table
DF <- as.data.frame(UCBAdmissions)
class(tab <- xtabs(Freq ~ ., DF)) # xtabs & table
## tab *is* "the same" as the original table:
all(tab == UCBAdmissions)
all.equal(dimnames(tab), dimnames(UCBAdmissions))
a <- rep(c(NA, 1/0:3), 10)
table(a)                 # does not report NA's
table(a, exclude = NULL) # reports NA's
b <- factor(rep(c("A","B","C"), 10))
table(b)
table(b, exclude = "B")
d <- factor(rep(c("A","B","C"), 10), levels = c("A","B","C","D","E"))
table(d, exclude = "B")
print(table(b, d), zero.print = ".")
## NA counting:
is.na(d) <- 3:4
d. <- addNA(d)
d.[1:7]
table(d.) # ", exclude = NULL" is not needed
## i.e., if you want to count the NA's of 'd', use
table(d, useNA = "ifany")
## "pathological" case:
d.patho <- addNA(c(1,NA,1:2,1:3))[-7]; is.na(d.patho) <- 3:4
d.patho
## just 3 consecutive NA's ? --- well, have *two* kinds of NAs here :
as.integer(d.patho) # 1 4 NA NA 1 2
##
## In R >= 3.4.0, table() allows to differentiate:
table(d.patho)                   # counts the "unusual" NA
table(d.patho, useNA = "ifany")  # counts all three
table(d.patho, exclude = NULL)   #  (ditto)
table(d.patho, exclude = NA)     # counts none
## Two-way tables with NA counts. The 3rd variant is absurd, but shows
## something that cannot be done using exclude or useNA.
with(airquality,
   table(OzHi = Ozone > 80, Month, useNA = "ifany"))
with(airquality,
   table(OzHi = Ozone > 80, Month, useNA = "always"))
with(airquality,
   table(OzHi = Ozone > 80, addNA(Month)))
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
tabulate 是底層函數,允許更精細的控製。
使用ftable 打印(以及更多)多維表。 margin.table、prop.table、addmargins。
xtabs 用於使用公式接口對數據幀進行交叉製表。
相關用法
- R tabulate 向量列表
- R taskCallback 添加或刪除頂級任務回調
- R taskCallbackManager 創建R級任務回調管理器
- R taskCallbackNames 查詢當前內部頂級任務回調名稱
- R tapply 對不規則數組應用函數
- R toString 將 R 對象轉換為字符串或測試字符串
- R tilde 波形符運算符
- R try 嘗試允許錯誤恢複的表達式
- R transform 轉換對象,例如 DataFrame
- R textConnection 文本連接
- R tracemem 對象的跟蹤複製
- R traceback 獲取並打印調用堆棧
- R t 矩陣轉置
- R tempfile 為臨時文件創建名稱
- R typeof 對象的類型
- R trace 函數或方法調用的交互式跟蹤和調試
- R timezones 時區
- R trimws 刪除前導/尾隨空格
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Cross Tabulation and Table Creation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
