《R语言实战》中文电子版
提取码:lx35
已经学习打卡R语言22天了,可以说是初窥真容——基本了解R的数据和函数;作为程序语言,就是要多练习,多领悟,在实战中发现问题并解决问题。
所以,就以《R语言实战》为基础,开始R语言实战学习,争取再过一个月,能够熟练掌握科研中所需的基本绘图代码和统计学计算,并且熟悉ggplot2包。
同时,之后的所有运行代码都在R-script脚本文件中写,不直接在运行框中写
加油!!!
Day 1
第一章 R语言的介绍R语句由函数和赋值组成。
使用
#表示注释符号。#后出现的所有文本都会被R解释器忽略,因此在书写复杂逻辑时,可灵活利用#进行说明。
获取帮助:help()或?***
工作目录:getwd()获取当前工作目录;setwd(“ ”)设定当前工作目录。
R包:包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。计算机上存储包的目录称为库(library);函数 .libPaths( ) 能够显示库所在的位置,函数library( )则可以显示库中有哪些包。
包的安装:install.packages("");加载包library( )。
R将反斜杠\视作一个转义字符。
批处理:想要以一种重复的、标准化的、无人值守的方式执行某个R程序。
R可以处理GB级到TB级的数据分析问题,但需要专门的手段。
将输出用为输入——结果的重用:将计算结果赋值给新的对象,之后就可以利用前一步的计算结果;如
lift
summary(lift)
Day 2
第二章 创建数据集
R分析前,需要根据个人需求的来创建含有数据的数据集,要求选择一种存储数据的数据结构,再将数据输入或导入到该数据结构中。
2.1、数据集
1、数据集
通常是由数据构成的一个矩形数组,行表示观测,列表示变量。
统计学家称它们为观测-observation和变量-variable,数据库分析师则称其为记录-record和字段-field,数据挖掘/机器学习学科的研究者则把它们叫做示例- example和属性-attribut e。在本书中通篇使用术语观测和变量。
2、数据结构与数据类型
R中存储数据的结构:包括标量、向量、数组、数据框和列表。
R中数据类型:数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)。
R将实例标识符称为rownames(行名),将类别型(包括名义型和有序型)变量称为因子( factors)。
2.2 数据结构在R中,对象( object)是指可以赋值给变量的任何事物,包括常量、数据结构、函数,
甚至图形。对象都拥有某种模式,描述了此对象是如何存储的,以及某个类,像print这样的泛型函数表明如何处理此对象。
(1)向量向量是用于存储数值型、字符型或逻辑型数据的一维数组。
函数c()可用来创建向量
单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。
注意:标量是只含一个元素的向量,例如f
索引:a[c()]
(2)矩阵矩阵是一个二维数组,只是每个元素都拥有相同的模式-只能包含一种数据类型(数值型、字符型或逻辑型)。
函数matrix()用来创建矩阵。
索引:X[i,]指矩阵X中的第i行,X[,j]指第j列, X[i, j]指第i行第j个元素。选择多行或多列时,下标i 和j 可为数值型向量。
(3)数组数组( array)与矩阵类似,但是维度可以大于2。
函数array()用来创建数组。
数组中的数据也只能拥有一种数据类型。
索引:X[i,]指矩阵X中的第i行, X[,j]指第j列, X[i, j]指第i行第j个元素。选择多行或多列时,下标i 和j 可为数值型向量。
(4)数据框数据框的不同的列可以包含不同模式(数值型、字符型等)的数据。
数据框将是你在R中最常处理的数据结构。
函数data.frame()用于创建数据框。
索引:[]或$-被用来选取一个给定数据框中的某个特定变量。
在每个变量名前都键入一次patientdata$可能会让人生厌,所以不妨走一些捷径。可以联合使用函数attach()和detach()或单独使用函数with()来简化代码。函数attach()可将数据框添加到R的搜索路径中;函数detach()将数据框从搜索路径中移除。
实例标识符:实例标识符(case identifier)可通过数据框操作函数中的rowname选项指定。
(5)因子(factor)类别(名义型)变量和有序类别(有序型)变量在R中称为因子( factor)。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1... k ](其中k 是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
(6)列表列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。
函数list()用于创建列表。
2.3 数据的输入
(1)使用键盘输入数据:edit()函数
(2)从带分隔符的文本文件导入数据:read.table()函数,读入为数据框格式
(3)导入Excel数据:读入为数据框格式读取一个Excel文件的最好方式,就是在Excel中将其导出为一个逗号分隔文件( csv),再用read.csv()读入。
xlsx包:函数read.xlsx()读入。
(4)导入XML数据
(5)从网页抓取数据
(6)导入SPSS数据:SPSS数据集可以通过foreign包中的函数read.spss()导入到R中,也可以使用Hmisc包中的spss.get()函数。
(7)导入SAS数据/导入Stata数据/导入netCDF数据/导入HDF5 数据/访问数据库管理系统/通过Stat/Transfer导入数据。
2.4 数据集的标注
通常这种标注包括为变量名添加描述性的标签,以及为类别型变量中的编码添加值标签。
(1)变量标签
(2)值标签
2.5 处理数据对象的使用函数
Day 3
第三章 图形初阶
可以应用于所有图形的通用方法:如何创建和保存图形,然后关注如何修改那些存在于所有图形中的特征,包括图形的标题、坐标轴、标签、颜色、线条、符号和文本标注。
3.1 使用图形在R通常的交互式会话中,你可以通过逐条输入语句构建图形,逐渐完善图形特征,直至得到想要的效果。
通过执行如plot()、 hist()(绘制直方图)或boxplot()这样的高级绘图命令来创建一幅新图形时,通常会覆盖掉先前的图形。可在图形窗口查看历史图形。
3.2 举个栗子
3.3 图形参数通过修改称为图形参数的选项来自定义一幅图形的多个特征(字体、颜色、坐标轴、标题)。
修改图形参数方法1:函数par()——以这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。添加参数no.readonly=TRUE可以生成一个可以修改的当前图形参数列表;(先设置参数,再绘制图形)
opar
> par(pch=17) #设置图形参数par()
> plot(cyl,wt) #绘制图形修改图形参数方法2:高级绘图函数直接提供optionname=value的键值对。 这种情况下,指定的选项仅对这幅图形本身有效。(并不是所有的高级绘图函数都允许指定全部可能的图形参数)
plot(dose, drugA,type="b",lty=2,pch=17)
(1)符号和线条对于符号21~25,还可以指定边界颜色( col=)和填充色( bg=)选项lty=用于指定想要的线条类型
(2)颜色在R中,可以通过颜色下标、颜色名称、十六进制的颜色值、 RGB值或HSV值来指定颜色。
函数rgb()可基于红—绿—蓝三色值生成颜色,而hsv()则基于色相—饱和度—亮度值来生成颜色。
函数colors()可以返回所有可用颜色的名称。
R中也有多种用于创建连续型颜色向量的函数,包括rainbow()、 heat.colors()、terrain.colors()、 topo.colors()以及cm.colors()。
多阶灰度色可使用gray()函数生成。
(3)文本属性
图形参数同样可以用来指定字号、字体和字样。
字体:
<1>在Windows系统中,等宽字体映射为TTCourier New,衬线字体映射为TT Times New Roman,无衬线字体则映射为TT Arial( TT代表TrueType)。
par(family="TT Times New Roman") #设置为衬线字体
<2>创建新的映射:在Windows中,可以通过函数windowsFont()来创建这类映射。
windowsFonts(A=windowsFont("Arial Black"),B=("Bookman Old Style"))
par(family="A")
(4)图形尺寸与边界尺寸
3.4 添加文本、自定义坐标轴和图例
(1)标题
title()函数为图形添加标题和坐标轴标签。
title(main="main title",col.main="red",sub="My Sub-title",col.sub="blue"
,xlab="My X label",ylab="My Y label",col.lab="green",cex.lab=0.75) #title()函数可以
设置如颜色、文本大小等图形参数。
(2)坐标轴函数axis()来创建自定义的坐标轴,而非使用R中的默认坐标轴。
创建自定义坐标轴时,你应当禁用高级绘图函数自动生成的坐标轴。参数axes=FALSE将禁用全部坐标轴(包括坐标轴框架线,除非你添加了参数frame.plot=TRUE)。参数xaxt="n"和yaxt="n"将分别禁用X轴或Y轴(会留下框架线,只是去除了刻度)。
axis(side,at=,labels=,pos=,lty=,col=,las=,tck=,...)
(3)参考线
函数abline()可以用来为图形添加参考线。
abline(h=yvalues,v=xvalues)
函数abline()中也可以指定其他图形参数(如线条类型、颜色和宽度)。
如:abline(h=c(1,5,7)) #在y的1/5/7位置添加了水平实线。
(4)图例当图形中包含的数据不止一组时,图例可以帮助你辨别出每个条形、扇形区域或折线各代表哪一类数据。
函数legend()用来添加图例。
其他常用的图例选项包括用于指定盒子样式的bty、指定背景色的bg、指定大小的cex,以及指定文本颜色的text.col。指定horiz=TRUE将会水平放置图例,而不是垂直放置。
legend(location,title,legend,...)
(5)文本标注通过函数text()和mtext()将文本添加到图形上。
text()可向绘图区域内部添加文本;text()函数也通常用来标示图形中的点。
mtext()则向图形的四个边界之一添加文本。
其他常用的选项有cex、 col和font(分别用来调整字号、颜色和字体样式)
text(location,"text to place",pos,...)
mtext("text to place",side,line=n,...)
3.5 图形的组合在R中使用函数par()或layout()可以容易地组合多幅图形为一幅总括图形。
在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。另外,可以使用nfcol=c(nrows, ncols)按列填充矩阵。
栗子:
attach(mtcars)
opar
par(mfrow=c(2,2))
plot(wt,mpg,main="Scatterplot of wt vs. mpg")
plot(wt,disp,main="Scatterplot of wt vs disp")
hist(wt,main="Boxplot of wt")
boxplot(wt,main="Boxplot of wt")
par(opar)
detach(mtcars)函数layout()的调用形式为layout(mat),其中的mat是一个矩阵,它指定了所要组合的多个图形的所在位置。
为了更精确地控制每幅图形的大小,可以有选择地在layout()函数中使用widths=和heights=两个参数;widths = 各列宽度值组成的一个向量;heights = 各行高度值组成的一个向量。
参考help(layout)以了解更多细节。
attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow=T),widths=c(3,1),heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)
detach