一、table 函数对应的就是统计学中的列联表,是一种记录频数的方法,对于统计来说有非常重要的应用,下面的例子都是针对维数为2的情况举例,多维的情况是类似的

下面看一个例子:

  1. > ct <- data.frame(
  2. +         Vote.for.X = factor(c("Yes", "Yes", "No", "Not Sure", "No"), levels = c("Yes", "No", "Not Sure")),
  3. +         Vote.for.X.Last.Time =  factor(c("Yes", "No", "No", "Yes", "No"), levels = c("Yes", "No"))
  4. +       )
  5. > ct
  6. Vote.for.X Vote.for.X.Last.Time
  7. 1        Yes                  Yes
  8. 2        Yes                   No
  9. 3         No                   No
  10. 4   Not Sure                  Yes
  11. 5         No                   No
  12. > cttab <-table(ct)
  13. > cttab
  14. Vote.for.X.Last.Time
  15. Vote.for.X Yes No
  16. Yes        1  1
  17. No         0  2
  18. Not Sure   1  0

首先我们创建了一个示例数据集合,其中我们指定我们的因子的水平,然后 table 函数则是统计所有因子对出现的情况的频数

下面看一下 cttab 的特点:

  1. > mode(cttab)
  2. [1] "numeric"
  3. > str(cttab)
  4. 'table' int [1:3, 1:2] 1 0 1 1 2 0
  5. - attr(*, "dimnames")=List of 2
  6. ..$ Vote.for.X          : chr [1:3] "Yes" "No" "Not Sure"
  7. ..$ Vote.for.X.Last.Time: chr [1:2] "Yes" "No"
  8. > summary(cttab)
  9. Number of cases in table: 5
  10. Number of factors: 2
  11. Test for independence of all factors:
  12. Chisq = 2.9167, df = 2, p-value = 0.2326
  13. Chi-squared approximation may be incorrect
  14. > attributes(cttab)
  15. $dim
  16. [1] 3 2
  17. $dimnames
  18. $dimnames$Vote.for.X
  19. [1] "Yes"      "No"       "Not Sure"
  20. $dimnames$Vote.for.X.Last.Time
  21. [1] "Yes" "No"
  22. $class
  23. [1] "table"

二、table对象的操作

一个必须要掌握的操作,addmargins

  1. > addmargins(cttab)
  2. Vote.for.X.Last.Time
  3. Vote.for.X Yes No Sum
  4. Yes        1  1   2
  5. No         0  2   2
  6. Not Sure   1  0   1
  7. Sum        2  3   5

下面取出各维度的名字,也就是各个的水平

  1. > dimnames(cttab)
  2. $Vote.for.X
  3. [1] "Yes"      "No"       "Not Sure"
  4. $Vote.for.X.Last.Time
  5. [1] "Yes" "No"

下面提取感兴趣的子表:subtable 类比 subset

subtable(tbl,subnames) tbl 感兴趣的表,subnames 一个类表,列出自己各个维度感兴趣的水平, subtable 实现如下

  1. subtable <- function(tbl, subnames) {
  2. #将 table 转换称 array 获得 table 里面的所有元素
  3. tblarray <- unclass(tbl)
  4. #将 tblarray 以及 subnames 组合到一个list中
  5. dcargs <- list(tblarray)
  6. ndims <- length(subnames)
  7. for(i in 1:ndims) {
  8. dcargs[[i+1]] <- subnames[[i]]
  9. }
  10. #等价与执行 dcargs[[1]][dcargs[[2]][i], dcargs[[3]][j]] i,j 取遍所有该属性的元素
  11. subarray <- do.call("[", dcargs)
  12. #对list中的每一个属性调用 length
  13. dims <- lapply(subnames, length)
  14. subtbl <- array(subarray, dims, dimnames = subnames)
  15. class(subtbl) <- "table"
  16. return(subtbl)
  17. }

下面给出一个例子:可能很有用的

  1. > as.data.frame(cttab)
  2. Vote.for.X Vote.for.X.Last.Time Freq
  3. 1        Yes                  Yes    1
  4. 2         No                  Yes    0
  5. 3   Not Sure                  Yes    1
  6. 4        Yes                   No    1
  7. 5         No                   No    2
  8. 6   Not Sure                   No    0

tabdom 计算table的统计频率

  1. tabdom <- function(tbl, k) {
  2. tbldf <- as.data.frame(tbl)
  3. freqord <- order(tabldf$Freq, decreasing=TRUE)
  4. dom <- tbldf[freqord, ][1:k]
  5. return(dom)
  6. }

注意:aggregate() 函数  cut() 函数

r table的更多相关文章

  1. JQuery操作TABLE,及console.info问题。

    还用alert 吗?看看console.info吧,代码的测试平台:ie9, firefox12 ​1. [代码][JavaScript]代码<!DOCTYPE html><html ...

  2. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  3. HBase 数据模型(Data Model)

    HBase Data Model--HBase 数据模型(翻译) 在HBase中,数据是存储在有行有列的表格中.这是与关系型数据库重复的术语,并不是有用的类比.相反,HBase可以被认为是一个多维度的 ...

  4. javascript基础05

    javascript基础05 1.变量的作用域 变量既可以是全局,也可以是局部的. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以 在这个脚本的任何位置(包括函数内 ...

  5. lua52 C API测试代码

    //这是一篇lua与C++交互的情景测试 #include <lua.hpp> #include <lauxlib.h> #include <lualib.h> # ...

  6. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  7. (WPF) 基本题

    What is WPF? WPF (Windows Presentation foundation) is a graphical subsystem for displaying user inte ...

  8. Mysql 关键字及保留字

    Table 10.2 Keywords and Reserved Words in MySQL 5.7 ACCESSIBLE (R) ACCOUNT[a] ACTION ADD (R) AFTER A ...

  9. hbase scan 的例子

    /** * Created by han on 2016/1/28. */ import org.apache.hadoop.conf.Configuration; import org.apache ...

随机推荐

  1. Atitti dbutil获取多个返回结果集的解决

    Atitti dbutil获取多个返回结果集的解决 1.1. 多个select默认只返回第一个resultset1 1.2. 调用存储过程,也是返回第一个select的1 1.3. 如果insert前 ...

  2. Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx

    Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx 1. 为什么需要接口调用??1 1.1. 为了方便集成复用模块类库1 1.2. 嫁 ...

  3. [na]ip包格式

    网络层提供的服务就是在不同网段之间转发数据包. Ip包结构 1,格式(每行4byte*5) 2,版本 V4 V6 3,首部长度 20(固定)+可变长度 ,区分服务 Win2008开始:gpedit. ...

  4. Android软件开发之盘点全部Dialog对话框大合集(一)

    对话框大合集 今天我用自己写的一个Demo和大家具体介绍一个Android中的对话框的使用技巧. 1.确定取消对话框 个button   通过调用setPositiveButton方法和 setNeg ...

  5. 读取word到二进制,再转成word

    static void Main(string[] args) { try { var strParams = new Dictionary<string, string>(); stri ...

  6. JavaWEB springmvc 使用定时任务

    1.配置web.xml 在web.xml配置使用springmvc框架,其他配置略. <display-name>xxx.com</display-name> <!-- ...

  7. 【小白的CFD之旅】18 控制方程基础

    忙碌了一个学期终于放暑假了,小白心情很愉快.然而想起CFD教材上的那些点缀着各种让人眼花缭乱符号的数学公式,整个人就不好了.不过这些事情小白也不好意思去麻烦师兄师姐们,还得靠自己去摸索.正好趁着暑假把 ...

  8. memory-based 协同过滤(CF)方法

    协同过滤(collaborative filtering,CF)算法主要分为memory-based CF 和 model-based CF,而memory-based CF 包括user-based ...

  9. 移动WEB开发基础入门

    什么是移动WEB开发,我个人理解就是,将网页更好的显示在移动端的一些设置,简单来说就两点如下: 1.流式布局,即百分比自适应布局 将body下的div容器的样式设置如下: div{ width:100 ...

  10. asp.net读取用户控件,自定义加载用户控件

    1.自定义加载用户控件 ceshi.aspx页面 <html> <body> <div id="divControls" runat="se ...