当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R table 交叉表和表格创建


R语言 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))

参数

...

一个或多个可以被解释为因子(包括数字或字符串)的对象,或者其组件可以被解释为因子的list(例如 DataFrame )。 (对于 as.table ,传递给特定方法的参数;对于 as.data.frame ,未使用。)

exclude

要删除 ... 中所有因子的级别。如果它不包含NA并且未指定useNA,则意味着useNA = "ifany"。有关非因子参数的解释,请参阅“详细信息”。

useNA

是否在表中包含NA 值。查看具体信息'。可以缩写。

dnn

为结果中的维度指定的名称(dimnames 名称)。

deparse.level

控制默认dnn 的构造方式。查看具体信息'。

x

任意的R对象,或从类继承的对象"table"为了as.data.frame方法。注意as.data.frame.table(x, *)可以为非表显式调用x对于“reshaping”arrays.

row.names

给出 DataFrame 的行名称的字符向量。

responseName

用于表条目列的名称,通常是计数。

stringsAsFactors

逻辑:分类因子应该作为因子(默认)还是字符向量返回?

sep , base

传递给provideDimnames

细节

如果未提供参数 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” 情况,它们的处理方式有所不同,具体取决于 useNAexclude ,请参阅下面“示例:”中的 d.patho

excludeuseNA 都在“all or none” 基础上运行。如果要单独控制多路表的维度,请使用 factoraddNA 修改每个参数。

非因子论证a被胁迫通过factor(a, exclude=exclude)。自从R3.4.0,小心不是计算排除的值(它们包含在NA计数,之前)。

"table"summary 方法(用于由 tablextabs 创建的对象)提供基本信息并执行因子独立性的卡方检验(请注意,函数 chisq.test 目前仅处理二维表)。

table() 返回列联表、"table" 类的对象、整数值数组。请注意,与 S 不同,结果始终是 array ,如果给出一个因子,则结果是一维数组。

as.tableis.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.tableprop.tableaddmargins

addNA 用于以 NA 作为水平构建因子。

xtabs 用于使用公式接口对数据帧进行交叉制表。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Cross Tabulation and Table Creation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。