R-table和tapply函数
table可统计数据的频数
tapply可根据因子、向量和要计算的函数计算
> class<-c(1,2,3,2,1,2,1,3)
> class
[1] 1 2 3
> c(81,65,72,88,73,91,56,90)->student
> class
[1] 1 2 3 2 1 2 1 3
>factor(class)->class
> tapply(student,class,mean)
1 2 3
70.00000 81.33333 81.00000
> tapply(student,class,min)
1 2 3
56 65 72
> tapply(student,class,max)
1 2 3
81 91 90
> table(class)
class
1 2 3
3 3 2
>
Apply a Function Over a Ragged Array
Description
Apply a function to each cell of a ragged array, that is to each (non-empty) group of values given by a unique combination of the levels of certain factors.
Usage
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
Arguments
X |
an atomic object, typically a vector. |
INDEX |
list of factors, each of same length as |
FUN |
the function to be applied, or |
... |
optional arguments to |
simplify |
If |
Value
If FUN
is not NULL
, it is passed to match.fun
, and hence it can be a function or a symbol or character string naming a function.
When FUN
is present, tapply
calls FUN
for each cell that has any data in it. If FUN
returns a single atomic value for each such cell (e.g., functions mean
or var
) and when simplify
is TRUE
, tapply
returns a multi-way array containing the values, and NA
for the empty cells. The array has the same number of dimensions as INDEX
has components; the number of levels in a dimension is the number of levels (nlevels()
) in the corresponding component of INDEX
. Note that if the return value has a class (e.g. an object of class "Date"
) the class is discarded.
Note that contrary to S, simplify = TRUE
always returns an array, possibly 1-dimensional.
If FUN
does not return a single atomic value, tapply
returns an array of mode list
whose components are the values of the individual calls to FUN
, i.e., the result is a list with a dim
attribute.
When there is an array answer, its dimnames
are named by the names of INDEX
and are based on the levels of the grouping factors (possibly after coercion).
For a list result, the elements corresponding to empty cells are NULL
.
Note
Optional arguments to FUN
supplied by the ...
argument are not divided into cells. It is therefore inappropriate for FUN
to expect additional arguments with the same length as X
.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & *s/Cole.
See Also
the convenience functions by
and aggregate
(using tapply
); apply
, lapply
with its versions sapply
and mapply
.
Examples
require(stats) groups <- as.factor(rbinom(32, n = 5, prob = 0.4)) tapply(groups, groups, length) #- is almost the same as table(groups) ## contingency table from data.frame : array with named dimnames tapply(warpbreaks$breaks, warpbreaks[,-1], sum) tapply(warpbreaks$breaks, warpbreaks[, 3, drop = FALSE], sum) n <- 17; fac <- factor(rep(1:3, length = n), levels = 1:5) table(fac) tapply(1:n, fac, sum) tapply(1:n, fac, sum, simplify = FALSE) tapply(1:n, fac, range) tapply(1:n, fac, quantile) ## example of ... argument: find quarterly means tapply(presidents, cycle(presidents), mean, na.rm = TRUE) ind <- list(c(1, 2, 2), c("A", "A", "B")) table(ind) tapply(1:3, ind) #-> the split vector tapply(1:3, ind, sum)
推荐阅读
-
简单介绍Python中的filter和lambda函数的使用
-
php输出控制函数和输出函数生成静态页面
-
Python多线程编程(三):threading.Thread类的重要函数和方法
-
PHP函数addslashes和mysql_real_escape_string的区别
-
PHP5.5和之前的版本empty函数的不同之处
-
浅谈javascript的url参数parse和build函数
-
javascript构造函数和原型(js构造函数和普通函数的区别)
-
Python中getattr函数和hasattr函数作用详解
-
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
-
实例详解python函数的对象、函数嵌套、名称空间和作用域