r table

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

下面看一个例子:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 的特点:

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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.   
  18. $dimnames  
  19. $dimnames$Vote.for.X  
  20. [1] "Yes"      "No"       "Not Sure"  
  21.   
  22. $dimnames$Vote.for.X.Last.Time  
  23. [1] "Yes" "No"   
  24.   
  25.   
  26. $class  
  27. [1] "table"  



 

二、table对象的操作

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

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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  


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

 

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. > dimnames(cttab)  
  2. $Vote.for.X  
  3. [1] "Yes"      "No"       "Not Sure"  
  4.   
  5. $Vote.for.X.Last.Time  
  6. [1] "Yes" "No"   


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

 

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

 

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


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

 

 

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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的统计频率

[html]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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() 函数

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值