《R语言实战》
基本信息
原书名:R in Action:Data Analysis and Graphics with R
作者: (美)Robert I. Kabacoff [作译者介绍]
译者: 高涛 肖楠 陈钢
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115299901
上架时间:2012-12-10
出版日期:2013 年1月
开本:16开
页码:1
版次:1-1
所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计
更多关于 》》》《R语言实战》
内容简介
书籍
《r语言实战》注重实用性,是一本全面而细致的r 指南,高度概括了该软件和它的强大功能,展示了实用的统计示例,且对于难以用传统方法处理的凌乱、不完整和非正态的数据给出了优雅的处理方法。作者不仅仅探讨统计分析,还阐述了大量探索和展示数据的图形功能。
《r语言实战》适合数据分析人员及r 用户学习参考。
目录
《r语言实战》
第一部分 入 门
第1章 r语言介绍 3
1.1 为何要使用r? 4
1.2 r的获取和安装 6
1.3 r的使用 7
1.3.1 新手上路 7
1.3.2 获取帮助 10
1.3.3 工作空间 10
1.3.4 输入和输出 12
1.4 包 14
1.4.1 什么是包 14
1.4.2 包的安装 14
1.4.3 包的载入 14
1.4.4 包的使用方法 15
1.5 批处理 15
1.6 将输出用为输入——结果的重用 16
1.7 处理大数据集 16
1.8 示例实践 17
1.9 小结 18
第2章 创建数据集 19
2.1 数据集的概念 19
2.2 数据结构 20
2.2.1 向量 21
2.2.2 矩阵 22
2.2.3 数组 23
2.2.4 数据框 24
2.2.5 因子 27
2.2.6 列表 29
2.3 数据的输入 30
2.3.1 使用键盘输入数据 31
2.3.2 从带分隔符的文本文件导入数据 32
2.3.3 导入excel数据 33
2.3.4 导入xml数据 34
2.3.5 从网页抓取数据 34
2.3.6 导入spss数据 34
2.3.7 导入sas数据 34
2.3.8 导入stata数据 35
2.3.9 导入netcdf数据 35
2.3.10 导入hdf5数据 35
2.3.11 访问数据库管理系统 36
2.3.12 通过stat/transfer导入数据 37
2.4 数据集的标注 37
2.4.1 变量标签 38
2.4.2 值标签 38
2.5 处理数据对象的实用函数 38
2.6 小结 39
第3章 图形初阶 40
3.1 使用图形 40
3.2 一个简单的例子 42
3.3 图形参数 43
3.3.1 符号和线条 45
3.3.2 颜色 46
3.3.3 文本属性 47
3.3.4 图形尺寸与边界尺寸 49
3.4 添加文本、自定义坐标轴和图例 50
3.4.1 标题 51
3.4.2 坐标轴 52
3.4.3 参考线 54
3.4.4 图例 54
3.4.5 文本标注 56
3.5 图形的组合 58
3.6 小结 64
第4章 基本数据管理 65
4.1 一个示例 65
4.2 创建新变量 67
4.3 变量的重编码 68
4.4 变量的重命名 69
4.5 缺失值 70
4.5.1 重编码某些值为缺失值 71
4.5.2 在分析中排除缺失值 72
4.6 日期值 73
4.6.1 将日期转换为字符型变量 74
4.6.2 更进一步 74
4.7 类型转换 74
4.8 数据排序 75
4.9 数据集的合并 76
4.9.1 添加列 76
4.9.2 添加行 76
4.10 数据集取子集 77
4.10.1 选入(保留)变量 77
4.10.2 剔除(丢弃)变量 77
4.10.3 选入观测 78
4.10.4 subset()函数 79
4.10.5 随机抽样 79
4.11 使用sql语句操作数据框 80
4.12 小结 81
第5章 高级数据管理 82
5.1 一个数据处理难题 82
5.2 数值和字符处理函数 83
5.2.1 数学函数 83
5.2.2 统计函数 84
5.2.3 概率函数 86
5.2.4 字符处理函数 89
5.2.5 其他实用函数 90
5.2.6 将函数应用于矩阵和数据框 91
5.3 数据处理难题的一套解决方案 93
5.4 控制流 96
5.4.1 重复和循环 97
5.4.2 条件执行 97
5.5 用户自编函数 99
5.6 整合与重构 101
5.6.1 转置 101
5.6.2 整合数据 101
5.6.3 reshape包 102
5.7 小结 105
第二部分 基本方法
第6章 基本图形 108
6.1 条形图 108
6.1.1 简单的条形图 109
6.1.2 堆砌条形图和分组条形图 110
6.1.3 均值条形图 111
6.1.4 条形图的微调 112
6.1.5 棘状图 113
6.2 饼图 114
6.3 直方图 116
6.4 核密度图 118
6.5 箱线图 120
6.5.1 使用并列箱线图进行跨组比较 121
6.5.2 小提琴图 124
6.6 点图 125
6.7 小结 128
第7章 基本统计分析 129
7.1 描述性统计分析 130
7.1.1 方法云集 130
7.1.2 分组计算描述性统计量 133
7.1.3 结果的可视化 136
7.2 频数表和列联表 136
7.2.1 生成频数表 137
7.2.2 独立性检验 142
7.2.3 相关性的度量 144
7.2.4 结果的可视化 144
7.2.5 将表转换为扁平格式 144
7.3 相关 146
7.3.1 相关的类型 146
7.3.2 相关性的显著性检验 148
7.3.3 相关关系的可视化 150
7.4 t检验 150
7.4.1 独立样本的t检验 150
7.4.2 非独立样本的t检验 151
7.4.3 多于两组的情况 152
7.5 组间差异的非参数检验 152
7.5.1 两组的比较 152
7.5.2 多于两组的比较 153
7.6 组间差异的可视化 155
7.7 小结 155
第三部分 中级方法
第8章 回归 158
8.1 回归的多面性 159
8.1.1 ols回归的适用情境 159
8.1.2 基础回顾 160
8.2 ols回归 160
8.2.1 用lm()拟合回归模型 161
8.2.2 简单线性回归 162
8.2.3 多项式回归 164
8.2.4 多元线性回归 167
8.2.5 有交互项的多元线性回归 169
8.3 回归诊断 171
8.3.1 标准方法 171
8.3.2 改进的方法 175
8.3.3 线性模型假设的综合验证 180
8.3.4 多重共线性 181
8.4 异常观测值 181
8.4.1 离群点 182
8.4.2 高杠杆值点 182
8.4.3 强影响点 183
8.5 改进措施 186
8.5.1 删除观测点 186
8.5.2 变量变换 186
8.5.3 增删变量 187
8.5.4 尝试其他方法 188
8.6 选择“最佳”的回归模型 188
8.6.1 模型比较 188
8.6.2 变量选择 189
8.7 深层次分析 193
8.7.1 交叉验证 193
8.7.2 相对重要性 194
8.8 小结 197
第9章 方差分析 198
9.1 术语速成 198
9.2 anova模型拟合 201
9.2.1 aov()函数 201
9.2.2 表达式中各项的顺序 201
9.3 单因素方差分析 202
9.3.1 多重比较 204
9.3.2 评估检验的假设条件 206
9.4 单因素协方差分析 208
9.4.1 评估检验的假设条件 209
9.4.2 结果可视化 210
9.5 双因素方差分析 211
9.6 重复测量方差分析 214
9.7 多元方差分析 216
9.7.1 评估假设检验 217
9.7.2 稳健多元方差分析 219
9.8 用回归来做anova 219
9.9 小结 221
第10章 功效分析 222
10.1 假设检验速览 222
10.2 用pwr包做功效分析 225
10.2.1 t检验 225
10.2.2 方差分析 227
10.2.3 相关性 227
10.2.4 线性模型 228
10.2.5 比例检验 229
10.2.6 卡方检验 229
10.2.7 在新情况中选择合适的效应值 230
10.3 绘制功效分析图形 232
10.4 其他软件包 234
10.5 小结 235
第11章 中级绘图 236
11.1 散点图 237
11.1.1 散点图矩阵 239
11.1.2 高密度散点图 244
11.1.3 三维散点图 247
11.1.4 气泡图 250
11.2 折线图 252
11.3 相关图 255
11.4 马赛克图 259
11.5 小结 261
第12章 重抽样与自助法 263
12.1 置换检验 263
12.2 用coin包做置换检验 265
12.2.1 独立两样本和k样本检验 266
12.2.2 列联表中的独立性 267
12.2.3 数值变量间的独立性 268
12.2.4 两样本和k样本相关性检验 268
12.2.5 深入探究 269
12.3 lmperm包的置换检验 269
12.3.1 简单回归和多项式回归 269
12.3.2 多元回归 271
12.3.3 单因素方差分析和协方差分析 271
12.3.4 双因素方差分析 272
12.4 置换检验点评 273
12.5 自助法 273
12.6 boot包中的自助法 274
12.6.1 对单个统计量使用自助法 275
12.6.2 多个统计量的自助法 277
12.7 小结 279
第四部分 高级方法
第13章 广义线性模型 282
13.1 广义线性模型和glm()函数 282
13.1.1 glm()函数 283
13.1.2 连用的函数 284
13.1.3 模型拟合和回归诊断 285
13.2 logistic回归 285
13.2.1 解释模型参数 288
13.2.2 评价预测变量对结果概率的影响 289
13.2.3 过度离势 290
13.2.4 扩展 291
13.3 泊松回归 291
13.3.1 解释模型参数 293
13.3.2 过度离势 294
13.3.3 扩展 295
13.4 小结 297
第14章 主成分和因子分析 298
14.1 r中的主成分和因子分析 299
14.2 主成分分析 300
14.2.1 判断主成分的个数 300
14.2.2 提取主成分 302
14.2.3 主成分旋转 305
14.2.4 获取主成分得分 306
14.3 探索性因子分析 307
14.3.1 判断需提取的公共因子数 308
14.3.2 提取公共因子 309
14.3.3 因子旋转 310
14.3.4 因子得分 313
14.3.5 其他与efa相关的包 313
14.4 其他潜变量模型 314
14.5 小结 314
第15章 处理缺失数据的高级方法 316
15.1 处理缺失值的步骤 317
15.2 识别缺失值 318
15.3 探索缺失值模式 319
15.3.1 列表显示缺失值 319
15.3.2 图形探究缺失数据 320
15.3.3 用相关性探索缺失值 322
15.4 理解缺失数据的来由和影响 324
15.5 理性处理不完整数据 325
15.6 完整实例分析(行删除) 326
15.7 多重插补 327
15.8 处理缺失值的其他方法 331
15.8.1 成对删除 331
15.8.2 简单(非随机)插补 332
15.9 小结 332
第16章 高级图形进阶 333
16.1 r中的四种图形系统 333
16.2 lattice包 334
16.2.1 条件变量 338
16.2.2 面板函数 339
16.2.3 分组变量 342
16.2.4 图形参数 345
16.2.5 页面摆放 346
16.3 ggplot2包 347
16.4 交互式图形 351
16.4.1 与图形交互:鉴别点 351
16.4.2 playwith 352
16.4.3 latticist 353
16.4.4 iplots包的交互图形 354
16.4.5 rggobi 355
16.5 小结 356
后记:探索r的世界 357
附录a 图形用户界面 359
附录b 自定义启动环境 362
附录c 从r中导出数据 364
附录d 制作出版级品质的输出 366
附录e r中的矩阵运算 374
附录f 本书中用到的扩展包 376
附录g 处理大数据 381
附录h 更新r 383
参考文献 385
-
R语言实战
2019-07-07 02:35:44《R语言实战》 基本信息 原书名:R in Action:Data Analysis and Graphics with R 作者: (美)Robert I. Kabacoff [作译者介绍] 译者: 高涛 肖楠 陈钢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:...转载于:https://www.cnblogs.com/china-pub/archive/2012/12/12/2814691.html
-
r语言实战
2020-09-07 10:43:46R语言是面向对象的。面向对象的理论一两句话说不清楚(我不清楚),但对于数据至少应该了解三个:1、R能处理的东西(包括数据)都称为object。这个英文单词的意思原本很清楚,就是物体、物件的意思,但被计算机专家...R语言是面向对象的。面向对象的理论一两句话说不清楚(我不清楚),但对于数据至少应该了解三个:1、R能处理的东西(包括数据)都称为object。这个英文单词的意思原本很清楚,就是物体、物件的意思,但被计算机专家们翻译成“对象”以后就很玄乎了。2、 物(object)以类聚。一个object都应该能找到它所归属的某个类(class)。“类”是抽象的概念,一个类至少有一个特征是这类数据所共有 的。根据应用需求、目的等不同可以定义不同的类。比如做生物信息的可以定义出DNA类、RNA类,为了高效处理这类数据,定义这些类是非常必要的。所以R 里面有很多的“类”。3、类可以继承产生儿孙类。
我们不可能也没必要去了解所有的“类”,但R语言定义的一些基本数据类得了解,而且得较详细地了解。这包括向量、因子、矩阵、列表、数据框和一些特殊值数据。一、向量(vector)我们通常接触的数据主要是数字、字符和逻辑(真和假,是或不是)类型的。数据有一个个的,也有一串串一批批的。在R里面,最基本的数据类是向量,即一串有序数据;但vector是虚拟类,没有父类型,它包含了在其他语言里面常说的基本数据类型如整型、字符型和逻辑型等:getClass(“vector”)
Virtual Class “vector” [package “methods”]
No Slots, prototype of class “logical”
Known Subclasses: #已知子类
Class “logical”, directly
Class “numeric”, directly
Class “character”, directly
Class “complex”, directly
Class “integer”, directly
Class “raw”, directly
Class “expression”, directly
Class “list”, directly
Class “structure”, directly, with explicit coerce
Class “array”, by class “structure”, distance 2, with explicit coerce
Class “matrix”, by class “array”, distance 3, with explicit coerce
Class “signature”, by class “character”, distance 2
Class “className”, by class “character”, distance 2
Class “ObjectsWithPackage”, by class “character”, distance 2
Class “mts”, by class “matrix”, distance 4, with explicit coerce
Class “ordered”, by class “factor”, distance 3
Class “namedList”, by class “list”, distance 2
Class “listOfMethods”, by class “namedList”, distance 3
R语言处理数据的最基本单位是向量,而不是原子数据。所以向量又称为原子向量(atomic vector),R语言的数据单位里面它最小(也最大,没有谁是它的父母)。但由于vector是虚拟类,不管用什么方式你都不可能获得类型名称叫“vector”的对象,只能获得它的直接子类的对象。下面的x是一个矩阵,虽然我们用as.vector函数进行转换,但获得对象的类名称是integer而不是vector:
x <- matrix(1:4, nrow=2)
class(x)
[1] “matrix”
class(as.vector(x))
[1] “integer”
一个向量可以是一串数字(n个数字,向量长度为n),也可以是1个数字(向量长度为1):
x=1:40
x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
x=1
x
[1] 1
等于号可以用于向量赋值,但符号“<-”更常用,更好,更专业:
x <- c(1,2,3)
x
[1] 1 2 3
y <- c(“赵匡胤”, “钱学森”, “孙思邈”)
y
[1] “赵匡胤” “钱学森” “孙思邈”
c( ) 是R的一个函数,表示将括号里面的内容连接起来成为一个向量。R提供了一些产生特殊向量的函数,如seq( )和rep( ),具体用法直接在R里面先输 入问号(?)和函数名去查询。vector是虚拟类,本身不指定数据的存储类型,但赋值以后就马上会有数字型(numeric)、字符型 (character)、逻辑型(logical)等实际类别,比如上面的变量x和y,用class( )函数获得的类型分别是数值型和字符型:
class(x)
[1] “numeric”
class(y)
[1] “character”
一个向量只属于一种类型,如果改变了一个元素的值可能会改变该向量的类型:
x <- seq(10)
x
[1] 1 2 3 4 5 6 7 8 9 10
class(x)
[1] “integer”
x[2] <- “Adam”
x
[1] “1” “Adam” “3” “4” “5” “6” “7” “8” “9” “10”
class(x)
[1] “character”
向量元素的引用/提取用下标法如 x[2],R语言的下标从1开始编号(而不是0)。二、因子(factor)R定义了一类非常特殊的数据类型:因子。比如我们的实验获得了10个数据,前5个数据来自对照样品CK,其余属于处理样品TR,R语言中可以用下面方法标识这10个数据的样品属性:
sample <- rep(c(“CK”,“TR”), each=5)
sample<- factor(sample)
sample
[1] CK CK CK CK CK TR TR TR TR TR
Levels: CK TR
因子的种类称为水平(level)。上面的样品sample因子有两个水平:CK和TR。因子类数据很特殊:
getClass(“factor”)
Class “factor” [package “methods”]
Slots:
Name: .Data levels .S3Class
Class: integer character character
Extends:
Class “integer”, from data part
Class “oldClass”, directly
Class “numeric”, by class “integer”, distance 2
Class “vector”, by class “integer”, distance 2
Known Subclasses: “ordered”
使用因子类数据是因为R是针对统计应用的语言。使用因子以后,数据的统计会完全不同。比如上面的两个样品10个测定数值如果是:
value <- rnorm(10)
value
[1] 1.44368380 -1.99417898 0.60279037 0.75186610 1.08372729 -0.16189030
[7] -0.05617801 1.03601538 -0.87932814 -0.32429184
求样品的平均值就可以这么做:
tapply(value, sample, mean)
CK TR
0.37757771 -0.07713458
gl( )函数也可以方便地产生因子:
sample <- gl(2, 5, labels = c(“CK”, “TR”))
sample
[1] CK CK CK CK CK TR TR TR TR TR
Levels: CK TR
三、矩阵(matrix)矩阵的继承关系比较复杂,它和数组(array)的关系既是父亲又是儿子,还是孙子:
getClass(“matrix”)
Class “matrix” [package “methods”]
No Slots, prototype of class “matrix”
Extends:
Class “array”, directly
Class “structure”, by class “array”, distance 2
Class “vector”, by class “array”, distance 3, with explicit coerce
Known Subclasses:
Class “array”, directly, with explicit test and coerce
Class “mts”, directly
如果你愿意,也可以把矩阵称为数组,但事实上它们是不同的类。生物类数据以二维数组/矩阵居多。向量数据可以转成矩阵,下面代码将10个元素的x转成2行5列的矩阵:
x <- 1:10
dim(x) <- c(2,5)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
dim(x)
[1] 2 5
dim( )是一个函数,它获取或设置数据的维度。注意x数据的行列排列顺序:先列后行。但是矩阵内数据的下标读取方式是先行后列。x[2, 1]是第2行第1列的值,x[2, ]表示第2行的所有数据,x[ ,2]表示第2列的所有数据。
x[2,1]
[1] 2
x[2,]
[1] 2 4 6 8 10
x[ ,2]
[1] 3 4
把1个向量转成矩阵还可以使用matrix( )函数,参数nrow设置行数,ncol设置列数:
matrix(1:10, nrow=2)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
几个长度相同的向量也可以合并到一个矩阵,cbind( )函数将每个向量当成一列(按列)合并,rbind( )按行合并:
x <- 3:6
y <- 4:7
z <- 1:4
cbind(x,y,z)
x y z
[1,] 3 4 1
[2,] 4 5 2
[3,] 5 6 3
[4,] 6 7 4
rbind(x,y,z)
[,1] [,2] [,3] [,4]
x 3 4 5 6
y 4 5 6 7
z 1 2 3 4
不同向量的数据类型要相同,否则转换成矩阵后数据类型会变样。下面代码将height内的数字全都转成了字符类型,这可能不是你想要的结果:
name <- c(“赵匡胤”, “钱学森”, “孙思邈”)
height <- c(172, 175, 168)
info <- rbind(name,height)
info
[,1] [,2] [,3]
name “赵匡胤” “钱学森” “孙思邈”
height “172” “175” “168”
class(info)
[1] “matrix”
身高是数值,但跟姓名混合组成矩阵后就变成字符型了(输出结果中用双引号引起来)。矩阵元素可通过下标引用,多维矩阵可以只用一个下标,请注意info[3]获得的数据:
info[1,]
[1] “赵匡胤” “钱学森” “孙思邈”
info[,1]
name height
“赵匡胤” “172”
info[3]
[1] “钱学森”
四、列表(list)列表由向量直接派生而来,nameList是它的子类,listOfMethods是它家孙子:
getClass(“list”)
Class “list” [package “methods”]
No Slots, prototype of class “list”
Extends: “vector”
Known Subclasses:
Class “namedList”, from data part
Class “listOfMethods”, by class “namedList”, distance 2
那么列表是什么样子的呢?看这:
gene <- list(agi=“AT1G00010”, gene.mode=c(“AT1G00010.1”, “AT1G00010.2”, “AT1G00010.3”), expression=matrix(1:10, ncol=2))
gene
$agi
[1] “AT1G00010”
$gene.mode
[1] “AT1G00010.1” “AT1G00010.2” “AT1G00010.3”
$expression
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
列表可以组合不同的数据类型,甚至可以是其他列表,各组成数据的类、长度、维数都可以不一样。 -
李倩星r语言实战_R语言实战:高级数据管理
2020-12-31 16:14:00本文内容来自《R 语言实战》(R in Action, 2nd),有部分修改数值和字符处理函数统计函数x 1:8x[1] 1 2 3 4 5 6 7 8简化版本mean(x)[1] 4.5sd(x)[1] 2.44949冗长版本n length(x)meanx sum(x) / nmeanx[1] 4.5css sum...本文内容来自《R 语言实战》(R in Action, 2nd),有部分修改
数值和字符处理函数
统计函数
x 1:8
x[1] 1 2 3 4 5 6 7 8
简化版本
mean(x)
[1] 4.5
sd(x)
[1] 2.44949
冗长版本
n length(x)
meanx sum(x) / n
meanx[1] 4.5
css sum((x - meanx)^2)
sdx sqrt(css / (n - 1))
sdx[1] 2.44949
scale()
函数scale(x)
[,1]
[1,] -1.4288690
[2,] -1.0206207
[3,] -0.6123724
[4,] -0.2041241
[5,] 0.2041241
[6,] 0.6123724
[7,] 1.0206207
[8,] 1.4288690
attr(,"scaled:center")
[1] 4.5
attr(,"scaled:scale")
[1] 2.44949概率函数
d
:密度函数p
:分布函数q
:分位数函数r
:随机数
runif(5)
[1] 0.3368141 0.3301134 0.9172243 0.7132270 0.5433076
runif(5)
[1] 0.5018690 0.5012920 0.2691537 0.1911182 0.1047126
set.seed()
设置随机数种子set.seed(1234)
runif(5)[1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
set.seed(1234)
runif(5)[1] 0.1137034 0.6222994 0.6092747 0.6233794 0.8609154
多元正态数据
MASS 包
mvrnorm()
函数library(MASS)
options(digits=3)mean c(230.7, 146.7, 3.6)
sigma matrix(c(15360.8, 6721.2, -47.1,6721.2, 4000.9, -16.5,-47.1, -16.5, 0.3
),
nrow=3,
ncol=3
)生成数据
set.seed(1234)
data mvrnorm(500, mean, sigma)
data as.data.frame(data)names(data) c("y", "x1", "x2")dim(data)
[1] 500 3
head(data, n=10)
y x1 x2
1 94.2 51.1 3.43
2 249.6 195.6 3.81
3 373.3 189.7 2.51
4 -59.9 15.4 4.71
5 305.9 123.3 3.41
6 290.1 182.2 2.74
7 140.7 154.9 4.41
8 169.4 102.2 3.64
9 165.5 104.8 3.50
10 120.7 96.2 4.09将函数应用与矩阵和数据框
a 5sqrt(5)
[1] 2.24
b c(1.243, 5.654, 2.99)round(b)
[1] 1 6 3
c matrix(runif(12), nrow=3)
c[,1] [,2] [,3] [,4]
[1,] 0.9636 0.216 0.289 0.913
[2,] 0.2068 0.240 0.804 0.353
[3,] 0.0862 0.197 0.378 0.931log(c)
[,1] [,2] [,3] [,4]
[1,] -0.0371 -1.53 -1.241 -0.0912
[2,] -1.5762 -1.43 -0.218 -1.0402
[3,] -2.4511 -1.62 -0.972 -0.0710mean(c)
[1] 0.465
apply()
函数data matrix(rnorm(30), nrow=6)
data[,1] [,2] [,3] [,4] [,5]
[1,] 0.459 1.203 1.234 0.591 -0.281
[2,] -1.261 0.769 -1.891 -0.435 0.812
[3,] -0.527 0.238 -0.223 -0.251 -0.208
[4,] -0.557 -1.415 0.768 -0.926 1.451
[5,] -0.374 2.934 0.388 1.087 0.841
[6,] -0.604 0.935 0.609 -1.944 -0.866dim(data)
[1] 6 5
1
表示计算每行的值apply(data, 1, mean)
[1] 0.641 -0.401 -0.194 -0.136 0.975 -0.374
2
表示计算每列的值apply(data, 2, mean)
[1] -0.478 0.777 0.148 -0.313 0.292
apply(data, 2, mean, trim=0.2)
[1] -0.516 0.786 0.386 -0.255 0.291
一个数据处理难题
options(digits=2)
Student c("John Davis", "Angela Williams", "Bullwinkle Moose","David Jones", "Janice Markhammer","Cheryl Cushing", "Reuven Ytzrhak","Greg Knox", "Joel England","Mary Rayburn"
)
math c(502, 600, 412, 358, 495, 512, 410, 625, 573, 522
)
science c(95, 99, 80, 82, 75, 85, 80, 95, 89, 86
)
english c(25, 22, 18, 15, 20, 28, 15, 30, 27, 18
)
roster data.frame(
Student,
math,
science,
english,
stringsAsFactors=FALSE
)
rosterStudent math science english
1 John Davis 502 95 25
2 Angela Williams 600 99 22
3 Bullwinkle Moose 412 80 18
4 David Jones 358 82 15
5 Janice Markhammer 495 75 20
6 Cheryl Cushing 512 85 28
7 Reuven Ytzrhak 410 80 15
8 Greg Knox 625 95 30
9 Joel England 573 89 27
10 Mary Rayburn 522 86 18计算综合得分
z scale(roster[, 2:4])
zmath science english
[1,] 0.013 1.078 0.587
[2,] 1.143 1.591 0.037
[3,] -1.026 -0.847 -0.697
[4,] -1.649 -0.590 -1.247
[5,] -0.068 -1.489 -0.330
[6,] 0.128 -0.205 1.137
[7,] -1.049 -0.847 -1.247
[8,] 1.432 1.078 1.504
[9,] 0.832 0.308 0.954
[10,] 0.243 -0.077 -0.697
attr(,"scaled:center")
math science english
501 87 22
attr(,"scaled:scale")
math science english
86.7 7.8 5.5score apply(z, 1, mean)
roster cbind(roster, score)
rosterStudent math science english score
1 John Davis 502 95 25 0.56
2 Angela Williams 600 99 22 0.92
3 Bullwinkle Moose 412 80 18 -0.86
4 David Jones 358 82 15 -1.16
5 Janice Markhammer 495 75 20 -0.63
6 Cheryl Cushing 512 85 28 0.35
7 Reuven Ytzrhak 410 80 15 -1.05
8 Greg Knox 625 95 30 1.34
9 Joel England 573 89 27 0.70
10 Mary Rayburn 522 86 18 -0.18评分
y quantile(
score, c(.8, .6, .4, .2)
)
y80% 60% 40% 20%
0.74 0.44 -0.36 -0.89roster$grade[score >= y[1]] "A"
roster$grade[score < y[1] & score >= y[2]] "B"
roster$grade[score < y[2] & score >= y[3]] "C"
roster$grade[score < y[3] & score >= y[4]] "D"
roster$grade[score < y[4]] "F"
rosterStudent math science english score grade
1 John Davis 502 95 25 0.56 B
2 Angela Williams 600 99 22 0.92 A
3 Bullwinkle Moose 412 80 18 -0.86 D
4 David Jones 358 82 15 -1.16 F
5 Janice Markhammer 495 75 20 -0.63 D
6 Cheryl Cushing 512 85 28 0.35 C
7 Reuven Ytzrhak 410 80 15 -1.05 F
8 Greg Knox 625 95 30 1.34 A
9 Joel England 573 89 27 0.70 B
10 Mary Rayburn 522 86 18 -0.18 C按姓氏和名字排序
name strsplit((roster$Student), " ")
last_name sapply(name, "[", 2)
first_name sapply(name, "[", 1)
roster roster[order(last_name, first_name),]
rosterStudent math science english score grade
6 Cheryl Cushing 512 85 28 0.35 C
1 John Davis 502 95 25 0.56 B
9 Joel England 573 89 27 0.70 B
4 David Jones 358 82 15 -1.16 F
8 Greg Knox 625 95 30 1.34 A
5 Janice Markhammer 495 75 20 -0.63 D
3 Bullwinkle Moose 412 80 18 -0.86 D
10 Mary Rayburn 522 86 18 -0.18 C
2 Angela Williams 600 99 22 0.92 A
7 Reuven Ytzrhak 410 80 15 -1.05 F控制流
feelings c("sad", "afraid")for (i in feelings) {print(switch(
i,
happy = "I am glad you are happy",
afraid = "There is nothing to fear",
sad = "Cheer up",
angry = "Calm down now"
)
)
}[1] "Cheer up"
[1] "There is nothing to fear"用户自编函数
my_stats function(x, parametric=TRUE, print=FALSE) {if (parametric) {
center mean(x)
spread sd(x)
} else {
center median(x)
spread mad(x)
}if (print & parametric) {cat("Mean", center, "\n", "SD=", spread, "\n")
} else if (print & !parametric) {cat("Median=", center, "\n", "MAD=", spread, "\n")
}
result list(center=center, spread=spread)return(result)
}set.seed(1234)
x rnorm(500)y my_stats(x)
y$center
[1] 0.0018
$spread
[1] 1y my_stats(x, parametric=FALSE, print=TRUE)
yMedian= -0.021
MAD= 1
$center
[1] -0.021
$spread
[1] 1my_date function(type="long") {switch(
type,
long = format(Sys.time(), "%A %B %d %Y"),
short = format(Sys.time(), "%m-%d-%y"),cat(type, "is not a recognized type\n")
)
}my_date("long")
[1] "星期三 十二月 30 2020"
my_date("short")
[1] "12-30-20"
my_date()
[1] "星期三 十二月 30 2020"
my_date("medium")
medium is not a recognized type
整合与重构
aggregate and reshape
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21 6 160 110 3.9 2.6 16 0 1 4 4
Mazda RX4 Wag 21 6 160 110 3.9 2.9 17 0 1 4 4
Datsun 710 23 4 108 93 3.8 2.3 19 1 1 4 1
Hornet 4 Drive 21 6 258 110 3.1 3.2 19 1 0 3 1
Hornet Sportabout 19 8 360 175 3.1 3.4 17 0 0 3 2
Valiant 18 6 225 105 2.8 3.5 20 1 0 3 1转置
cars mtcars[1:5, 1:4]
carsmpg cyl disp hp
Mazda RX4 21 6 160 110
Mazda RX4 Wag 21 6 160 110
Datsun 710 23 4 108 93
Hornet 4 Drive 21 6 258 110
Hornet Sportabout 19 8 360 175t(cars)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout
mpg 21 21 23 21 19
cyl 6 6 4 6 8
disp 160 160 108 258 360
hp 110 110 93 110 175整合数据
options(digits=3)
attach(mtcars)
agg_data aggregate(
mtcars,
by=list(cyl, gear),
FUN=mean,
na.rm=TRUE
)detach(mtcars)
agg_dataGroup.1 Group.2 mpg cyl disp hp drat wt qsec vs am gear carb
1 4 3 21.5 4 120 97 3.70 2.46 20.0 1.0 0.00 3 1.00
2 6 3 19.8 6 242 108 2.92 3.34 19.8 1.0 0.00 3 1.00
3 8 3 15.1 8 358 194 3.12 4.10 17.1 0.0 0.00 3 3.08
4 4 4 26.9 4 103 76 4.11 2.38 19.6 1.0 0.75 4 1.50
5 6 4 19.8 6 164 116 3.91 3.09 17.7 0.5 0.50 4 4.00
6 4 5 28.2 4 108 102 4.10 1.83 16.8 0.5 1.00 5 2.00
7 6 5 19.7 6 145 175 3.62 2.77 15.5 0.0 1.00 5 6.00
8 8 5 15.4 8 326 300 3.88 3.37 14.6 0.0 1.00 5 6.00reshape2
示例数据,包括两个标识符变量
ID
和Time
,两个测量变量X1
和X2
my_data data.frame(
ID=c(1, 1, 2, 2),
Time=c(1, 2, 1, 2),
X1=c(5, 3, 6, 2),
X2=c(6, 5, 1, 4)
)
my_dataID Time X1 X2
1 1 1 5 6
2 1 2 3 5
3 2 1 6 1
4 2 2 2 4library(reshape2)
融合
melt()
每一行都是一个单独的测量,表示为:
唯一标识符 + 测量变量
md melt(my_data, id=c("ID", "Time"))
mdID Time variable value
1 1 1 X1 5
2 1 2 X1 3
3 2 1 X1 6
4 2 2 X1 2
5 1 1 X2 6
6 1 2 X2 5
7 2 1 X2 1
8 2 2 X2 4重铸
dcast()
不执行整合
相当于被重塑 (reshape)
dcast(md, ID + Time ~ variable)
ID Time X1 X2
1 1 1 5 6
2 1 2 3 5
3 2 1 6 1
4 2 2 2 4dcast(md, ID + variable ~ Time)
ID variable 1 2
1 1 X1 5 3
2 1 X2 6 5
3 2 X1 6 2
4 2 X2 1 4dcast(md, ID ~ variable + Time)
ID X1_1 X1_2 X2_1 X2_2
1 1 5 3 6 5
2 2 6 2 1 4执行整合
附加整合函数,例如
mean
dcast(md, ID ~ variable, mean.default)
ID X1 X2
1 1 4 5.5
2 2 4 2.5dcast(md, Time~variable, mean.default)
Time X1 X2
1 1 5.5 3.5
2 2 2.5 4.5dcast(md, ID~Time, mean.default)
ID 1 2
1 1 5.5 4
2 2 3.5 3参考
R 语言实战
《图形初阶》
《基本数据管理》
题图由 ArtTower 在 Pixabay 上发布。 -
李倩星r语言实战_R语言实战:基本数据管理
2020-12-30 13:42:03本文内容来自《R 语言实战》(R in Action, 2nd),有部分修改示例构造data.frame对象manager 1:5date c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")country c("US","US","UK","UK","UK")gender c("M", "F...本文内容来自《R 语言实战》(R in Action, 2nd),有部分修改
示例
构造
data.frame
对象manager 1:5
date c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09"
)
country c("US","US","UK","UK","UK"
)
gender c("M", "F", "F", "M", "F")
age c(32, 45, 25, 39, 99)
q1 c(5, 3, 3, 3, 2)
q2 c(4, 5, 5, 3, 2)
q3 c(5, 2, 5, 4, 1)
q4 c(5, 5, 5, NA, 2)
q5 c(5, 5, 2, NA, 1)
leadership data.frame(
manager,
date,
country,
gender,
age,
q1,
q2,
q3,
q4,
q5,
stringsAsFactors=FALSE
)
leadershipmanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2
4 4 10/12/08 UK M 39 3 3 4 NA NA
5 5 5/1/09 UK F 99 2 2 1 2 1每一列表示一个变量,每一行表示一个观测
创建新变量
三种方式
赋值
mydata data.frame(
x1=c(2, 2, 6, 4),
x2=c(3, 4, 2, 8)
)
mydata$sumx mydata$x1 + mydata$x2
mydata$meanx (mydata$x1 + mydata$x2)/2使用
attach()
省略对象名attach(mydata)
mydata$sumx x1 + x2
mydata$meanx (x1 + x2)/2detach(mydata)transform()
函数mydata transform(
mydata,
sumx=x1 + x2,
meanx=(x1 + x2)/2
)变量的重编码
修改现有变量
leadership$age[leadership$age == 99] NA
leadershipmanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2
4 4 10/12/08 UK M 39 3 3 4 NA NA
5 5 5/1/09 UK F NA 2 2 1 2 1增加新变量
leadership$agecat[leadership$age > 75] "Elder"
leadership$agecat[
leadership$age >= 55 &
leadership$age <= 75
] "Middle Aged"
leadership$agecat[leadership$age < 55] "Young"
leadershipmanager date country gender age q1 q2 q3 q4 q5 agecat
1 1 10/24/08 US M 32 5 4 5 5 5 Young
2 2 10/28/08 US F 45 3 5 2 5 5 Young
3 3 10/1/08 UK F 25 3 5 5 5 2 Young
4 4 10/12/08 UK M 39 3 3 4 NA NA Young
5 5 5/1/09 UK F NA 2 2 1 2 1使用
within
简化代码leadership within(
leadership,
{
agecat NA
agecat[age > 75] "Elder"
agecat[age >= 55 & age <= 75] "Middle Aged"
agecat[age < 55] "Young"
}
)变量的重命名
names()
函数names(leadership)
[1] "manager" "date" "country" "gender" "age" "q1" "q2" "q3"
[9] "q4" "q5" "agecat"names(leadership)[2] "testDate"
leadershipmanager testDate country gender age q1 q2 q3 q4 q5 agecat
1 1 10/24/08 US M 32 5 4 5 5 5 Young
2 2 10/28/08 US F 45 3 5 2 5 5 Young
3 3 10/1/08 UK F 25 3 5 5 5 2 Young
4 4 10/12/08 UK M 39 3 3 4 NA NA Young
5 5 5/1/09 UK F NA 2 2 1 2 1plyr
包中的rename()
函数library(plyr)
leadership data.frame(
manager,
date,
country,
gender,
age,
q1,
q2,
q3,
q4,
q5,
stringsAsFactors=FALSE
)
leadership rename(
leadership,c(
manager="managerID",
date="testDate"
)
)
leadershipmanagerID testDate country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2
4 4 10/12/08 UK M 39 3 3 4 NA NA
5 5 5/1/09 UK F 99 2 2 1 2 1缺失值
is.na()
函数is.na(leadership[, 6:10])
q1 q2 q3 q4 q5
[1,] FALSE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE TRUE TRUE
[5,] FALSE FALSE FALSE FALSE FALSENA
等特殊值无法使用逻辑关系符比较na_var NA
na_var == NA[1] NA
Inf
和-Inf
表示正无穷大和负无穷大is.infinite(5/0)
[1] TRUE
NaN
表示不可能的值is.nan(NaN)
[1] TRUE
重编码某些值为缺失值
leadership data.frame(
manager,
date,
country,
gender,
age,
q1,
q2,
q3,
q4,
q5,
stringsAsFactors=FALSE
)
leadership$age[leadership$age == 99] NA
leadershipmanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2
4 4 10/12/08 UK M 39 3 3 4 NA NA
5 5 5/1/09 UK F NA 2 2 1 2 1在分析中排除缺失值
x c(1, 2, NA, 3)
x[1] + x[2] + x[3] + x[4][1] NA
sum(x)
[1] NA
na.rm
选项移除缺失值sum(x, na.rm=TRUE)
[1] 6
na.omit()
函数删除包含缺失值的观测,称为行删除。注:该方法仅是处理缺失值的一种方法。
leadership
manager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2
4 4 10/12/08 UK M 39 3 3 4 NA NA
5 5 5/1/09 UK F NA 2 2 1 2 1trim_leadership na.omit(leadership)
trim_leadershipmanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2日期
as.Date()
默认格式为
yyyy-mm-dd
as.Date(c("2007-06-22", "2004-02-13"))
[1] "2007-06-22" "2004-02-13"
格式字符串
as.Date(c("01/05/1965", "08/16/1975"), "%m/%d/%Y")
[1] "1965-01-05" "1975-08-16"
leadership$date as.Date(leadership$date, "%m/%d/%y")
leadershipmanager date country gender age q1 q2 q3 q4 q5
1 1 2008-10-24 US M 32 5 4 5 5 5
2 2 2008-10-28 US F 45 3 5 2 5 5
3 3 2008-10-01 UK F 25 3 5 5 5 2
4 4 2008-10-12 UK M 39 3 3 4 NA NA
5 5 2009-05-01 UK F NA 2 2 1 2 1Sys.Date()
获取日期Sys.Date()
[1] "2020-12-28"
date()
获取时间date()
[1] "Mon Dec 28 20:36:48 2020"
format()
函数格式化日期today Sys.Date()format(today, format="%B %d %y")
[1] "十二月 28 20"
format(today, format="%A")
[1] "星期一"
算术运算
start_date as.Date("2004-02-13")
end_date as.Date("2011-01-22")
days end_date - start_date
daysTime difference of 2535 days
difftime()
today Sys.Date()
dob as.Date("1956-10-12")difftime(today, dob, units="weeks")Time difference of 3350.429 weeks
将日期转换为字符串变量
str_date as.character(today)
str_date[1] "2020-12-28"
lubridate 包
library(lubridate)
解析日期和时间
ymd("20110604")
[1] "2011-06-04"
mdy("06-04-2011")
[1] "2011-06-04"
dmy("04/06/2011")
[1] "2011-06-04"
解析时间
arrive ymd_hms("2011-06-04 12:00:00",
tz="Pacific/Auckland"
)
arrive[1] "2011-06-04 12:00:00 NZST"
leave ymd_hms("2011-08-10 14:00:00",
tz="Pacific/Auckland"
)
leave[1] "2011-08-10 14:00:00 NZST"
设置和提取信息
second(arrive)
[1] 0
second(arrive) 25
arrive[1] "2011-06-04 12:00:25 NZST"
wday(arrive)
[1] 7
wday(arrive, label=TRUE)
[1] 周六
Levels: 周日 < 周一 < 周二 < 周三 < 周四 < 周五 < 周六时区
meeting ymd_hms("2011-07-01 09:00:00",
tz="Pacific/Auckland"
)with_tz(
meeting, "America/Chicago"
)[1] "2011-06-30 16:00:00 CDT"
mistake force_tz(
meeting,"America/Chicago"
)with_tz(
mistake,"Pacific/Auckland"
)[1] "2011-07-02 02:00:00 NZST"
时间段
interval()
函数auckland interval(arrive, leave)
auckland[1] 2011-06-04 12:00:25 NZST--2011-08-10 14:00:00 NZST
%--%
运算符auckland arrive %--% leave
auckland[1] 2011-06-04 12:00:25 NZST--2011-08-10 14:00:00 NZST
jsm interval(ymd(20110720, tz="Pacific/Auckland"),ymd(20110831, tz="Pacific/Auckland")
)
jsm[1] 2011-07-20 NZST--2011-08-31 NZST
是否有重叠
int_overlaps(jsm, auckland)
[1] TRUE
setdiff(auckland, jsm)
[1] 2011-06-04 12:00:25 NZST--2011-07-20 NZST
日期算术计算
Period
minutes(2)
[1] "2M 0S"
Duration
dminutes(2)
[1] "120s (~2 minutes)"
Duration 与 Period 的区别
leap_year(2011)
[1] FALSE
ymd(20110101) + dyears(1)
[1] "2012-01-01 06:00:00 UTC"
ymd(20110101) + years(1)
[1] "2012-01-01"
leap_year(2012)
[1] TRUE
ymd(20120101) + dyears(1)
[1] "2012-12-31 06:00:00 UTC"
ymd(20120101) + years(1)
[1] "2013-01-01"
计算
meetings meeting + weeks(0:5)
meetings[1] "2011-07-01 09:00:00 NZST" "2011-07-08 09:00:00 NZST" "2011-07-15 09:00:00 NZST"
[4] "2011-07-22 09:00:00 NZST" "2011-07-29 09:00:00 NZST" "2011-08-05 09:00:00 NZST"%within
meetings %within% jsm
[1] FALSE FALSE FALSE TRUE TRUE TRUE
auckland / ddays(1)
[1] 67.08304
auckland / ddays(2)
[1] 33.54152
auckland / dminutes(1)
[1] 96599.58
auckland %/% months(1)
[1] 2
auckland %% months(1)
[1] 2011-08-04 12:00:25 NZST--2011-08-10 14:00:00 NZST
as.period()
函数as.period(auckland %% months(1))
[1] "6d 1H 59M 35S"
as.period(auckland)
[1] "2m 6d 1H 59M 35S"
不合理时间
jan31 ymd("2013-01-31")
jan31 + months(0:11)[1] "2013-01-31" NA "2013-03-31" NA "2013-05-31" NA
[7] "2013-07-31" "2013-08-31" NA "2013-10-31" NA "2013-12-31"floor_date(jan31, "month") + months(0:11) + days(31)
[1] "2013-02-01" "2013-03-04" "2013-04-01" "2013-05-02" "2013-06-01" "2013-07-02"
[7] "2013-08-01" "2013-09-01" "2013-10-02" "2013-11-01" "2013-12-02" "2014-01-01"jan31 %m+% months(0:11)
[1] "2013-01-31" "2013-02-28" "2013-03-31" "2013-04-30" "2013-05-31" "2013-06-30"
[7] "2013-07-31" "2013-08-31" "2013-09-30" "2013-10-31" "2013-11-30" "2013-12-31"向量化
lubridate 代码已开启向量化
类型转换
a c(1, 2, 3)
a[1] 1 2 3
is.numeric(a)
[1] TRUE
a as.character(a)
a[1] "1" "2" "3"
is.numeric(a)
[1] FALSE
is.vector(a)
[1] TRUE
is.character(a)
[1] TRUE
数据排序
order()
函数new_data leadership[order(leadership$age),]
new_datamanager date country gender age q1 q2 q3 q4 q5
3 3 2008-10-01 UK F 25 3 5 5 5 2
1 1 2008-10-24 US M 32 5 4 5 5 5
4 4 2008-10-12 UK M 39 3 3 4 NA NA
2 2 2008-10-28 US F 45 3 5 2 5 5
5 5 2009-05-01 UK F NA 2 2 1 2 1多重排序
attach(leadership)
new_data leadership[order(gender, age),]detach(leadership)
new_datamanager date country gender age q1 q2 q3 q4 q5
3 3 2008-10-01 UK F 25 3 5 5 5 2
2 2 2008-10-28 US F 45 3 5 2 5 5
5 5 2009-05-01 UK F NA 2 2 1 2 1
1 1 2008-10-24 US M 32 5 4 5 5 5
4 4 2008-10-12 UK M 39 3 3 4 NA NA逆序
attach(leadership)
new_data leadership[order(gender, -age),]detach(leadership)
new_datamanager date country gender age q1 q2 q3 q4 q5
5 5 2009-05-01 UK F NA 2 2 1 2 1
2 2 2008-10-28 US F 45 3 5 2 5 5
3 3 2008-10-01 UK F 25 3 5 5 5 2
4 4 2008-10-12 UK M 39 3 3 4 NA NA
1 1 2008-10-24 US M 32 5 4 5 5 5数据集的合并
向数据框添加列
merge()
函数total merge(dataframeA, dataframeB, by="ID")
total merge(dataframeA, dataframeB, by=c("ID", "Country"))向数据框添加行
total rbind(dataframeA, dataframeB)
数据集取子集
选入(保留)变量
变量序号
new_data leadership[, c(6:10)]
new_dataq1 q2 q3 q4 q5
1 5 4 5 5 5
2 3 5 2 5 5
3 3 5 5 5 2
4 3 3 4 NA NA
5 2 2 1 2 1变量名称
selected_vars c("q1", "q2", "q3", "q4", "q5")
new_data leadership[selected_vars]
new_dataq1 q2 q3 q4 q5
1 5 4 5 5 5
2 3 5 2 5 5
3 3 5 5 5 2
4 3 3 4 NA NA
5 2 2 1 2 1selected_vars paste("q", 1:5, sep="")
new_data leadership[selected_vars]
new_dataq1 q2 q3 q4 q5
1 5 4 5 5 5
2 3 5 2 5 5
3 3 5 5 5 2
4 3 3 4 NA NA
5 2 2 1 2 1剔除(丢弃)变量
变量名
selected_vars names(leadership) %in% c("q3", "q4")
selected_vars[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
new_data leadership[!selected_vars]
new_datamanager date country gender age q1 q2 q5
1 1 2008-10-24 US M 32 5 4 5
2 2 2008-10-28 US F 45 3 5 5
3 3 2008-10-01 UK F 25 3 5 2
4 4 2008-10-12 UK M 39 3 3 NA
5 5 2009-05-01 UK F NA 2 2 1变量序号
new_data leadership[c(-8, -9)]
new_datamanager date country gender age q1 q2 q5
1 1 2008-10-24 US M 32 5 4 5
2 2 2008-10-28 US F 45 3 5 5
3 3 2008-10-01 UK F 25 3 5 2
4 4 2008-10-12 UK M 39 3 3 NA
5 5 2009-05-01 UK F NA 2 2 1设置为
NULL
leadership$q3 leadership$q4 NULL
leadershipmanager date country gender age q1 q2 q5
1 1 2008-10-24 US M 32 5 4 5
2 2 2008-10-28 US F 45 3 5 5
3 3 2008-10-01 UK F 25 3 5 2
4 4 2008-10-12 UK M 39 3 3 NA
5 5 2009-05-01 UK F NA 2 2 1选入观测
leadership data.frame(
manager,
date,
country,
gender,
age,
q1,
q2,
q3,
q4,
q5,
stringsAsFactors=FALSE
)序号
new_data leadership[1:3, ]
new_datamanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
2 2 10/28/08 US F 45 3 5 2 5 5
3 3 10/1/08 UK F 25 3 5 5 5 2条件筛选
new_data leadership[
leadership$gender=="M" &
leadership$age > 30,
]
new_datamanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
4 4 10/12/08 UK M 39 3 3 4 NA NAattach(leadership)
new_data leadership[
gender == "M" & age > 30,
]detach(leadership)
new_datamanager date country gender age q1 q2 q3 q4 q5
1 1 10/24/08 US M 32 5 4 5 5 5
4 4 10/12/08 UK M 39 3 3 4 NA NAwhich()
函数leadership$date as.Date(
leadership$date, "%m/%d/%y"
)
start_date as.Date("2009-01-01")
end_date as.Date("2009-10-31")
new_data leadership[which(
leadership$date >= start_date &
leadership$date <= end_date
),
]
new_datamanager date country gender age q1 q2 q3 q4 q5
5 5 2009-05-01 UK F 99 2 2 1 2 1subset()
函数new_data subset(
leadership,
age >= 35 | age < 24,
select=c(q1, q2, q3, q4)
)
new_dataq1 q2 q3 q4
2 3 5 2 5
4 3 3 4 NA
5 2 2 1 2new_data subset(
leadership,
gender == "M" & age > 25,
select=gender:q4
)
new_datagender age q1 q2 q3 q4
1 M 32 5 4 5 5
4 M 39 3 3 4 NA随机抽样
sample()
sample_data leadership[sample(1:nrow(leadership),3,
replace=FALSE
),
]
sample_datamanager date country gender age q1 q2 q3 q4 q5
5 5 2009-05-01 UK F 99 2 2 1 2 1
1 1 2008-10-24 US M 32 5 4 5 5 5
4 4 2008-10-12 UK M 39 3 3 4 NA NA使用 SQL 语句操作数据框
sqldf 包
library(sqldf)
df sqldf("select * from mtcars where carb=1 order by mpg",
row.names=TRUE
)
dfmpg cyl disp hp drat wt qsec vs am gear carb
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1sqldf(
paste(
"select avg(mpg) as avg_mpg, avg(disp) as avg_disp, gear from mtcars",
"where cyl in (4, 6) group by gear",
sep=" "
)
)avg_mpg avg_disp gear
1 20.33333 201.0333 3
2 24.53333 123.0167 4
3 25.36667 120.1333 5参考
R 语言实战
《R语言实战:图形初阶》
题图由 enriquelopezgarre 在 Pixabay 上发布。 -
R 语言实战_源代码
2019-02-02 22:07:56R 语言实战,包含每个章节中用来实例,讲解的源代码,图灵社区在线数据~~ -
r语言 append_R语言实战菜鸡笔记(一):R语言介绍
2021-01-25 02:14:15# 《R语言实战》第一章 R语言介绍# RStudio快捷键# 新文档Ctrl+Shift+N# 保存当前文档 Ctrl+S# 运行当前行 Ctrl+Enter# 运行当前文档 Ctrl+Alt+R# 快速注释Ctrl+Shift+Cgetwd() # 得到文件路径setwd("E:/专业课/R... -
R语言简明参考卡片+处理对象的实用函数(R语言实战).pdf
2020-04-20 15:36:02R语言简明参考卡片,中文版,常用命令汇总。 处理对象的常用函数来自R语言实战,函数详细使用方法help()。 如涉侵权请联系撤销 -
R语言实战-读书笔记(第1 章 R语言介绍)
2020-04-19 15:44:28*R语言实战学习笔记,如涉及侵权,请联系撤稿。* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍 1.2 R的获取与安装 R可以在CRAN(Comprehensive R Archive Network,http://cran.r-project.org)上免费... -
R语言实战之行业案例分享视频课程
2017-06-06 18:13:05本课程属于数据挖掘及R语言实战的进阶篇,需要具备较扎实的R语言基础。希望通过本课程,能将以往学到的数据挖掘理论知识和R语言工具,利用四个不同行业的实际数据,如何从原始数据阶段,一步步进行数据清洗、数据... -
r 满足条件的行赋值_R语言实战学习
2021-01-28 13:19:22《R语言实战》中文电子版链接:https://pan.baidu.com/s/1IS1Fe8JjnoG4-ahBwCTgxQ ...所以,就以《R语言实战》为基础,开始R语言实战学习,争取再过一个月,能够熟练掌握科研中所需的基本绘图代码和统计学计算,并... -
重在实战!十五大案例,开启R语言实战之门金钥匙.txt
2020-05-09 14:31:00重在实战!十五大案例,开启R语言实战之门金钥匙视频教程分享,网盘下载,附源码课件。希望可以帮助到大家!!! -
数据挖掘&机器学习之R语言实战入门教程(上)
2017-08-15 10:23:28R语言作为一种数据分析和机器学习的专业语言,是当今数据科学领域流行的免费开源编程语言之一,在数据分析与...《R语言实战入门教程》为大家介绍了R语言的入门及使用,希望能帮助大家认识R语言,用R语言提高工作效率。 -
R语言实战笔记
2016-02-20 17:35:47《R语言实战》(Venables&Ripley(2000)Chambers(2008)) 总结:脑残地按一定格式调用函数,尽情蹂躏数据。 1 R基础 在R中,对象(object)是指可以赋值给变量的任何事物,包括常量、数据结构、函数,甚至图形。 ... -
《R语言实战》学习记录:R语言介绍及创建数据集
2018-08-21 16:05:43教程:《R语言实战》 学习内容:第一章、第二章 R语言实战 第一章:R语言介绍 > getwd() # 显示当前工作目录 [1] "D:/Documents" > setwd("E:\\Learning_R\\practice") ... -
R语言必看推荐:R语言入门经典版(中文版)+R语言实战第二版(中文完整版)
2020-02-17 21:15:32R语言实战(第2版)注重实用性,是一本全面而细致的R指南,高度概括了该软件和它的强大功能,展示了使用的统计示例,且对于难以用传统方法处理的凌乱、不完整和非正态的数据给出了优雅的处理方法。作者不仅仅探讨统计... -
r语言岭回归参数选择_R语言实战之回归分析
2021-01-08 10:11:59从许多方面来看,回归分析都是统计学的核心。它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。...《R语言实战--... -
r语言 协整_量化投资基础、方法与策略——R语言实战指南
2020-12-30 22:22:50量化投资基础、方法与策略——R语言实战指南作译者:付志刚,沈慧娟 出版时间:2019-06千 字 数:594 版次:01-01页 数:480 ... -
R语言实战-第一章
2019-01-21 10:14:29R语言实战-第一章第一章R语言介绍1.3R的使用 第一章R语言介绍 你好!第一部分主要是 R语言 入门的内容,我们可以一起了解一下R的基本语法知识。 1.3R的使用 #执行脚本 source(“filename”) #文本输出 sink... -
r语言 图形一览_R语言实战—图形篇(图形初阶)
2020-12-24 03:32:21最近沉迷学习R语言,不得不说《R语言实战》真的太详细了,详细的阅读完这本书后,我的收获不小。为了方便自己复习,将这本书的内容整理归纳为两个部分:统计篇(数据分析)和图形篇(数据可视化)。图形篇将会分为四个...
-
C#Winform桌面开发编程上位机基础入门
-
【I-intern】2021年,留学生如何回国找到好工作?
-
MySQL 触发器
-
NILWCVIRTE90.zip
-
libFuzzer视频教程
-
YAMAHA RX-V757电源.png
-
编程学习 | c语言源程序扩展名
-
STM32T8U6最小系统原理图PCB文件
-
牛牛量化策略交易
-
MySQL查看及杀掉链接方法大全
-
主动做了业务监控,产品经理对我竖起大拇指
-
解除B站区域限制.user.js
-
MySQL 事务和锁
-
视频监控系统中的大数据问题调查
-
压力式泡沫比例混合装置生产厂家分析工作原理数据说明
-
申宝股票解盘—耐心等
-
2021年 系统分析师 系列课
-
springframework
-
粘包拆包 ( 料主為何不自己洗料 )
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署