使用R进行分组统计
分组统计数据集是很常见的需求,R中也有相应的包支持数据集的分组统计。自己尝试了写了段R代码来完成分组统计数据集,支持公式,感觉用起来还算方便。代码分享在文章最后。
使用方式:
step 1: source('AggregateSummary.R')
step 2: pastecs_summary(mpg+hp+wt~am,data=mtcars)
执行结果如下:

AggregateSummary.R的源码:
library(plyr)
library(stringr)
library(pastecs) parseformula <- function(formula = "... ~ variable", varnames, value.var = "value") {
remove.placeholder <- function(x) x[x != "."]
replace.remainder <- function(x) {
if (any(x == "...")) c(x[x != "..."], remainder) else x
} if (is.formula(formula)) {
formula <- str_c(deparse(formula, 500), collapse = "")
} if (is.character(formula)) {
dims <- str_split(formula, fixed("~"))[[1]]
formula <- lapply(str_split(dims, "[+*]"), str_trim) formula <- lapply(formula, remove.placeholder) all_vars <- unlist(formula)
if (any(all_vars == "...")) {
remainder <- setdiff(varnames, c(all_vars, value.var))
formula <- lapply(formula, replace.remainder)
}
} if (!is.list(formula)) {
stop("Don't know how to parse", formula, call. = FALSE)
}
lapply(formula, as.quoted)
} evalFormula <- function(formula,data){
fo<-parseformula(formula)
lapply(fo,eval.quoted,envir=data)
} pastecs_Summary<- function(formula,data){
tmplist<-evalFormula(formula,data)
df1<-as.data.frame(tmplist[1])
uni<-unique(tmplist[[2]][[1]])
lst<-list()
for(i in uni){
lst[[paste(names(tmplist[[2]]),i)]]<-stat.desc(df1[which(tmplist[[2]][[1]]==i),])
} return(lst)
}
使用R进行分组统计的更多相关文章
- R语言-分组统计
分组统计 1.假定有一组成绩数据,要求根据性别进行分组统计: > score ID score1 score2 Gender1 101 11.35321 0.9 male2 ...
- R语言︱数据分组统计函数族——apply族用法与心得
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:apply族功能强大,实用,可以代替 ...
- R中利用apply、tapply、lapply、sapply、mapply、table等函数进行分组统计
apply函数(对一个数组按行或者按列进行计算): 使用格式为: apply(X, MARGIN, FUN, ...) 其中X为一个数组:MARGIN为一个向量(表示要将函数FUN应用到X的行还是列) ...
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...
- XtraGrid使用心得(折叠式主细档、分组统计)
XtraGrid的关键类就是:GridControl和GridView.GridControl本身不显示数据,数据都是显示在GridView/CardView/XXXXView中.GridContro ...
- Oracle按不同时间分组统计
Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- ...
- 【.Net】 大文件可使用的文本分组统计工具(附带源码,原创)
本工具可实现的效果: 1.读取大文件(大于1GB) 2.根据分隔符分割后的列分组 3.速度快. 4.处理过程中,可以随时停止处理,操作不卡死. 5.有对当前内存的实时监测,避免过多占用内存,影响系统运 ...
- 数据分组统计函数族——apply族用法与心得
笔者寄语:apply族功能强大,实用,可以代替很多循环语句,R语言中不要轻易使用循环语句. 原文链接: https://blog.csdn.net/sinat_26917383/article/det ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
随机推荐
- yii2 HTML组手
1.样式和脚本 1.1 Yii 提供两个方法用于生成包含内联样式和脚本代码的标签. <?= Html::style('.danger { color: #f00; }') ?> Gives ...
- Java动态代理探讨
代理模式: 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.通过代理模式,可以延迟创建对象, ...
- DIV+CSS实战(一)
一.说明 作为一个后台的程序员,我也是很少写前端,最近有一个项目,前端主要是由我来负责,就把我在项目中所学到的东西,记录下来!我的页面要嵌入到另一个系统中,所以,并不是按照传统的top,left,co ...
- <a href=“#”>
在html中看到这样的属性:<a href=“#”>搜了好久,感觉不甚明白,现记之,等遇到了再做补充. # is called an anchor (or hash...). so the ...
- linux上安装maven
解压安装: tar -zxvf apache-maven-3.3.9-bin.tar.gz 配置环境变量 cd /etc/ vi profile 在最后面加上M2_HOME=/usr/local/my ...
- xib创建cell的两种方法
方法一:第一步:[self.collectionView registerNib:[UINib nibWithNibName:@"QGLShareBtnCell" bundle:n ...
- SPATIALINDEX_LIBRARY Cmake
https://libspatialindex.org/ QGIS:https://github.com/qgis/QGIS/blob/master/cmake/FindSpatialindex.cm ...
- 查看Linux服务器被映射的公网ip
查看Linux服务器被映射的公网ip 现在云服务器非常流行,不仅企业甚至是个人都可能拥有自己的云服务器,但是目前的云服务器厂商提供的公网IP大都是映射而来,所以在Linux服务器上执行ifconf ...
- Mina集成Spring --- 在配置文件中配置sessionconfig
这个找了很久,一直想用这个功能,在xml里,配置如下: <?xml version="1.0" encoding="UTF-8"?> <bea ...
- Visual Studio模板
转载自MSDN,此文仅作参考. http://msdn.microsoft.com/zh-cn/library/6db0hwky(VS.80).aspx 1. 如何导入“项目模板(Project Te ...