9.1 plyr包简介

ddply {plyr}: Split data frame, apply function, and return results in a data frame.

ddply(.data, .variables, .fun = NULL, ..., .progress = "none", .inform = FALSE, .drop = TRUE, .parallel = FALSE, .paropts = NULL)

  • .data:用来作图的数据。
  • .variables:对数据取子集的分组变量,形式是 .(var1, var2) ,为了与图形保持一致,该变量必须包含所有在画图过程中用到的分组变量和分面变量。
  • .fun:要在各个子集上运行的统计汇总函数。
  • .inform:产生信息丰富的错误消息?这在默认情况下是关闭的,因为它大大降低了处理速度,但是对于调试非常有用。
# 选取各个颜色里最小的钻石
ddply(diamonds, .(color), subset, carat == min(carat))
# 选取最小的两颗钻石
ddply(diamonds, .(color), subset, order(carat) <= 2)
# 选取每组里大小为前1%的钻石
ddply(diamonds, .(color), subset, carat > quantile(carat, 0.99))
# 选出所有比组平均值大的钻石
ddply(diamonds, .(color), subset, price > mean(price))

transform {base}: Transform an Object, for Example a Data Frame.

transform(`_data`, ...)

transform()是进行数据变换的函数,与ddply()结合可以计算分组统计量。

# 把每个颜色组里钻石的价格标准化,使其均值为0,方差为1
ddply(diamonds, .(color), transform, price = scale(price))

colwise {plyr}: Column-wise function.

colwise用来向量化一个函数,能把原本只接受向量输入的函数变成可以接受数据框输入的函数。

要注意colwise返回的是一个新的函数,而不是函数运行的结果。

下面例子中nmissing()计算向量里缺失值的数目,用colwise()向量化后,可以应用到数据框,计算数据框中各列的缺失值数目。

nmissing <- function(x) sum(is.na(x))

nmissing_df <- colwise(nmissing)
nmissing_df(msleep) # This is shorthand for the previous two steps
colwise(nmissing)(msleep)

numcolwise()和catcolwise()是colwise()的特殊版本,功能类似,但numcolwise()只对数值类型的列操作,catcolwise()只对分类类型的列操作。

我们也可以编写编写的函数,只要他能够接受、输出数据框就可以。下面的例子计算价格和克拉的秩相关关系。

my_summary <- function(df) {
with(df, data.frame(pc_cor = cor(price, carat, method = "spearman"), lpc_cor = cor(log(price),
log(carat))))
}
ddply(diamonds, .(cut), my_summary) ddply(diamonds, .(color), my_summary)

拟合多个模型:

dense <- subset(diamonds, carat < 2)
qplot(carat, price, data = dense, geom = "smooth", colour = color, fullrange = TRUE)

library(mgcv)
library(plyr)
smooth <- function(df) {
mod <- gam(price ~ s(carat, bs = "cs"), data = df)
grid <- data.frame(carat = seq(0.2, 2, length = 50))
pred <- predict(mod, grid, se = T)
grid$price <- pred$fit
grid$se <- pred$se.fit
grid
}
smoothes <- ddply(dense, .(color), smooth)
qplot(carat, price, data = smoothes, colour = color, geom = "line")
qplot(carat, price, data = smoothes, colour = color, geom = "smooth", ymax = price +
2 * se, ymin = price - 2 * se)

9.2 数据化“宽”为“长”

melt {reshape2}: Convert an object into a molten data frame.

melt(data, ..., na.rm = FALSE, value.name = "value")

  • data:待变形的原数据;
  • id.vars:依旧放在列上、位置保持不变的变量;
  • measure.vars:需要被放进同一列的变量。

示例:

https://www.cnblogs.com/dingdangsunny/p/12482067.html#_label3

多重时间序列:

emp <- melt(economics, id = "date", measure = c("unemploy", "uempmed"))
qplot(date, value, data = emp, geom = "line") + facet_grid(variable ~ ., scales = "free_y")

ggplot2不允许绘制带有两个不同坐标轴的图,因为这样的图具有误导性。可以使用自由标度的分面图形表达有量级差的变量。

总结

ggplot2(9) 数据操作的更多相关文章

  1. StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)

    本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...

  2. hive数据操作

    mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...

  3. Dapper 数据操作框架

    数据操作DapperFrom NuGet:Install-Package DapperorInstall-Package Dapper.StrongName微型ORM:PetaPoco获得PetaPo ...

  4. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  5. coreData数据操作

    // 1. 建立模型文件// 2. 建立CoreDataStack// 3. 设置AppDelegate 接着 // // CoreDataStack.swift // CoreDataStackDe ...

  6. Entity Framework 5.0系列之数据操作

    Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何 ...

  7. 数据操作语言DML与运算符

    数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...

  8. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  9. C#利用SqlDataAdapte对DataTable进行批量数据操作

    C#利用SqlDataAdapte对DataTable进行批量数据操作,可以让我们大大简化操作数据的代码量,我们几乎不需要循环和不关心用户到底是新增还是修改,更不用编写新增和修改以及删除的SQL语句, ...

  10. 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

随机推荐

  1. Python迭代器和关键字 global ,nonlocal

    1.关键字 global : 可以修改全局变量 可以在局部作用域声明一个全局变量,剪切 : 此时局部作用域没有该变量,全局作用域中有 name = 1 def func(): global name ...

  2. Ribosome profiling|N-terminomics|蛋白质基因组学

    生物医学大数据-蛋白质基因组学:质谱注释 蛋白质组与其他组学的关系便是互为印证:蛋白质基因组学原本用于基因组注释,后面扩展到蛋白质与转录组或可变剪接之间关系,同时,蛋白质组依赖于基因组注释作为验证.许 ...

  3. CentOS 6.5 搭建DNS服务器

    1.安装bind yum install -y bind 2.修改named.conf主配置文件 vim /etc/named.conf 图中圈中的地方改为any 3.配置正向.反向解析 vim /e ...

  4. Mr.Yu

    在linux下搭建Git服务器 git服务器环境 服务器 CentOS7 + git(version 1.8.3.1)客户端 Windows10 + git(version 2.16.0.window ...

  5. [LC] 226. Invert Binary Tree

    Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: 4 / \ 7 2 / \ / \ 9 6 3 1 /* ...

  6. CDN是什么鬼

    CDN,内容分发网络,是大多数互联网业务里必不可少的部分,但大多数互联网从业人员不是特别清楚CDN究竟是什么,以及它可以为我们做哪些事情. 我们还是从之前介绍的<不同的人看到的直播为什么不一样? ...

  7. 成组vs成对|H1是受保护的|U检验

    生物统计与实验设计 样本均值的分布推导 概率密度曲线上每点x取值概率是不相等的.标准化是转化为无量纲的表面误差,该分布是误差分布,置信区间是可接受该误差是随机误差的误差区间.上面的部分是该估计参数与平 ...

  8. oracle存储过程随笔

    有时间要把最近总结的存储过程的问题总结一下,先占坑: create or replace procedure test_proc2 as cursor cur is select YWR,YWRZJH ...

  9. Python自动化之数据驱动(转载下自己的日常练习笔记)

    一.execl数据驱动 1.xlutils简要说明 导包:pip3 install xlutils 注意⚠️:xlutils在介些Execl文件的时候,只识别.xls后缀的文件,如果是.xlsx后缀的 ...

  10. stm32 flash 存储

    转载自: http://bbs.elecfans.com/jishu_388272_1_1.html 说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用 ...