一、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. 【Android开发】交互界面布局详解

    原文:http://android.eoe.cn/topic/summary Android 的系统 UI 为构建您自己的应用提供了基础的框架.主要包括主屏幕 (Home Screen).系统 UI ...

  2. C++中关于指针运算符->的重载问题

    #include<iostream>using namespace std;struct date{ int year; int month; int day;};struct Perso ...

  3. [na]ping提示&各系统默认的TTL值

    1,Win7 ping 不存在的地址(请求超时) ip routing和no ip routing no ip routing----不查路由表 不配置网关---arp-catch中存在很多条目(相当 ...

  4. 【Unity】11.1 角色控制器 (Character Controller)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 角色控制器(Character Controller)主要用于对第三人称或第一人称游戏主角的控制.如果要创建类人角色,可 ...

  5. maven正式版本和快照版本的区别

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  6. NonWindowJoin

    package org.apache.flink.table.runtime.join /** * Connect data for left stream and right stream. Bas ...

  7. golang标准库分析之net/rpc

    net/rpc是golang提供的一个实现rpc的标准库.

  8. Linux内核分析:recv、recvfrom、recvmsg函数实现

    先看一下这三个函数的声明: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, vo ...

  9. 【转】MySQL查看表占用空间大小(转)

    //先进去MySQL自带管理库:information_schema //自己的数据库:rokid_cas_music_test //自己的表:data_song_thirdparty mysql&g ...

  10. 一个实体对象不能由多个 IEntityChangeTracker 实例引用。

    错误代码 public bool addSubOptionItem(csModel.cs_Answer answers) { bool result = false; wpe = new csWeiP ...