r table
一、table 函数对应的就是统计学中的列联表,是一种记录频数的方法,对于统计来说有非常重要的应用,下面的例子都是针对维数为2的情况举例,多维的情况是类似的
下面看一个例子:
- > ct <- data.frame(
- + Vote.for.X = factor(c("Yes", "Yes", "No", "Not Sure", "No"), levels = c("Yes", "No", "Not Sure")),
- + Vote.for.X.Last.Time = factor(c("Yes", "No", "No", "Yes", "No"), levels = c("Yes", "No"))
- + )
- > ct
- Vote.for.X Vote.for.X.Last.Time
- 1 Yes Yes
- 2 Yes No
- 3 No No
- 4 Not Sure Yes
- 5 No No
- > cttab <-table(ct)
- > cttab
- Vote.for.X.Last.Time
- Vote.for.X Yes No
- Yes 1 1
- No 0 2
- Not Sure 1 0
首先我们创建了一个示例数据集合,其中我们指定我们的因子的水平,然后 table 函数则是统计所有因子对出现的情况的频数
下面看一下 cttab 的特点:
- > mode(cttab)
- [1] "numeric"
- > str(cttab)
- 'table' int [1:3, 1:2] 1 0 1 1 2 0
- - attr(*, "dimnames")=List of 2
- ..$ Vote.for.X : chr [1:3] "Yes" "No" "Not Sure"
- ..$ Vote.for.X.Last.Time: chr [1:2] "Yes" "No"
- > summary(cttab)
- Number of cases in table: 5
- Number of factors: 2
- Test for independence of all factors:
- Chisq = 2.9167, df = 2, p-value = 0.2326
- Chi-squared approximation may be incorrect
- > attributes(cttab)
- $dim
- [1] 3 2
- $dimnames
- $dimnames$Vote.for.X
- [1] "Yes" "No" "Not Sure"
- $dimnames$Vote.for.X.Last.Time
- [1] "Yes" "No"
- $class
- [1] "table"
二、table对象的操作
一个必须要掌握的操作,addmargins
- > addmargins(cttab)
- Vote.for.X.Last.Time
- Vote.for.X Yes No Sum
- Yes 1 1 2
- No 0 2 2
- Not Sure 1 0 1
- Sum 2 3 5
下面取出各维度的名字,也就是各个的水平
- > dimnames(cttab)
- $Vote.for.X
- [1] "Yes" "No" "Not Sure"
- $Vote.for.X.Last.Time
- [1] "Yes" "No"
下面提取感兴趣的子表:subtable 类比 subset
subtable(tbl,subnames) tbl 感兴趣的表,subnames 一个类表,列出自己各个维度感兴趣的水平, subtable 实现如下
- subtable <- function(tbl, subnames) {
- #将 table 转换称 array 获得 table 里面的所有元素
- tblarray <- unclass(tbl)
- #将 tblarray 以及 subnames 组合到一个list中
- dcargs <- list(tblarray)
- ndims <- length(subnames)
- for(i in 1:ndims) {
- dcargs[[i+1]] <- subnames[[i]]
- }
- #等价与执行 dcargs[[1]][dcargs[[2]][i], dcargs[[3]][j]] i,j 取遍所有该属性的元素
- subarray <- do.call("[", dcargs)
- #对list中的每一个属性调用 length
- dims <- lapply(subnames, length)
- subtbl <- array(subarray, dims, dimnames = subnames)
- class(subtbl) <- "table"
- return(subtbl)
- }
下面给出一个例子:可能很有用的
- > as.data.frame(cttab)
- Vote.for.X Vote.for.X.Last.Time Freq
- 1 Yes Yes 1
- 2 No Yes 0
- 3 Not Sure Yes 1
- 4 Yes No 1
- 5 No No 2
- 6 Not Sure No 0
tabdom 计算table的统计频率
- tabdom <- function(tbl, k) {
- tbldf <- as.data.frame(tbl)
- freqord <- order(tabldf$Freq, decreasing=TRUE)
- dom <- tbldf[freqord, ][1:k]
- return(dom)
- }
注意:aggregate() 函数 cut() 函数
r table的更多相关文章
- JQuery操作TABLE,及console.info问题。
还用alert 吗?看看console.info吧,代码的测试平台:ie9, firefox12 1. [代码][JavaScript]代码<!DOCTYPE html><html ...
- bzoj1266最短路+最小割
本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...
- HBase 数据模型(Data Model)
HBase Data Model--HBase 数据模型(翻译) 在HBase中,数据是存储在有行有列的表格中.这是与关系型数据库重复的术语,并不是有用的类比.相反,HBase可以被认为是一个多维度的 ...
- javascript基础05
javascript基础05 1.变量的作用域 变量既可以是全局,也可以是局部的. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以 在这个脚本的任何位置(包括函数内 ...
- lua52 C API测试代码
//这是一篇lua与C++交互的情景测试 #include <lua.hpp> #include <lauxlib.h> #include <lualib.h> # ...
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- (WPF) 基本题
What is WPF? WPF (Windows Presentation foundation) is a graphical subsystem for displaying user inte ...
- Mysql 关键字及保留字
Table 10.2 Keywords and Reserved Words in MySQL 5.7 ACCESSIBLE (R) ACCOUNT[a] ACTION ADD (R) AFTER A ...
- hbase scan 的例子
/** * Created by han on 2016/1/28. */ import org.apache.hadoop.conf.Configuration; import org.apache ...
随机推荐
- Android 计算文件 MD5 遇到的问题
版本下载,做 MD5 校验,使用的 MD5 算法出现了异常,当出现以 0 开头的 MD5的时候,会把 0 给忽略掉,造成 MD5 只有 31 位,造成校验失败. 转:http://blog.csdn. ...
- 使用Delaunay三角剖分解决求多边形面积的问题
朋友那边最近有个需求,需要框选一个选区,然后根据选区中的点求出面积.并且让我尝试用Delaunay来解决 似乎音译过来应该是德诺类 大致如下: 我在github上找了一个可以用的Delaunay库 h ...
- Nginx做转发
二台服务器,服务器A做域名转外,所有外网的域名都到这台服务器A的80端口上,服务器B内网地址192.168.1.227, 上面IIS搭建了N多网站,以端口来区分,用以前的方式 配置转发 结果发现首页能 ...
- [svc]arpping链路层检测
arping命令,测试链路层是否同 参考 yum install iputils -y arping - send ARP REQUEST to a neighbour host -b:用于发送以太网 ...
- at org.apache.catalina.webresources.CachedResource.validateResources
"catalina-exec-659" #5239 daemon prio=5 os_prio=0 tid=0x00007fcba8099800 nid=0x581 waiting ...
- [Windows Azure] Building worker role B (email sender) for the Windows Azure Email Service application - 5 of 5.
Building worker role B (email sender) for the Windows Azure Email Service application - 5 of 5. This ...
- (原创)谈谈boost.asio的异步发送
在上一篇博文中提到asio的异步发送稍微复杂一点,有必要单独拿出来说说.asio异步发送复杂的地方在于: 不能连续调用异步发送接口async_write,因为async_write内部是不断调用asy ...
- PBR Metallic/Roughness工作流中Albedo与F0的计算方法
首先简单回顾一下典型的纯金属与绝缘体的PBR属性: 纯金属: Albedo(diff): 0 F0(spec): >0.3 (or 0.5, epic/allegorithmic etc.) M ...
- WAVE文件格式解析
WAVE 文件作为Windows多媒体中使用的声音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的.这里不针对RIFF文件格式做介绍,不 ...
- Windows删除/修改注册表权限不足的解决方法
在注册表的某些关键项(譬如:System.Root),连Administrator都没有权限进行修改,因为只有“system”有权限. [警告]切勿企图进行注册表上层权限覆盖低层权限的方式来使Admi ...