大数据中的R语言——中国大学MOOC课程笔记

第一章 R语言简介

1.1 简介

image-20221119123729548

R的特性

免费的

一个全面的统计研究平台

拥有顶尖水准的制图功能

一个可进行交互式数据分析和探索的强大平台

轻松地从各种类型的数据源导入数据,包括文本文件、数据库管理系统、统计软件,乃至专门的数据仓库

可运行于多种平台之上

R最激动人心的一部分功能是通过可选模块的下载和安装来实现

目前有2500多个称为包(package)的用户贡献模块可从

http://cran.r-project.org/web/packages下载

1.2 包的安装与使用

第一次安装一个包,使用命令install.packages()即可

使用library()命令载入包,例如library(gclus)

使用包时常见的错误

​ • 错误的大小写,例如:help(),Help(),HELP()是三个不同的函数

​ • 忘记使用必要的引号,例如:install.packages(gclus)会报错

​ • 函数调用时忘记使用括号,例如:使用help代替了help()

​ • 使用了尚未载入包中的函数,例如:要先载入gclus才能使用

order.clusters()

1.3 R中的基本操作

image-20221119124353058

image-20221119124413093

第二章 数据类型与结构

2.1 数据集

据构成的一个矩形数组称为数据集

查看R中所有内置的数据集

data(package = .packages(all.available = TRUE))

• 查看指定包中的数据集

data(package =“package name”)

• 查看某个数据集的信息

Help函数 or ?

2.2 创建矩阵

matrix(data,nrow,ncol,byrow,dimnames)

 a_matrix<-matrix(1:12, nrow=4,dimnames=list(c("r1","r2","r3","r4"),c("c1","c2","c3") )

2.3 访问矩阵

image-20221119131650786

2.4 数组与数据框

数组是可以在两个以上的维度存储数据的R数据对象

使用array函数创建数组

array(data,dim,dimnames)

数据框可以将不同的数据类型组合在一起的数据结构

使用data.frame函数创建数据框

data.frame(col1,col2,col3,)

选取数据框的元素:

​ - 1 使用[ ],指定两个下标,类似矩阵的选取方法

​ - 2 可以指定列名访问

- **2** **使用$记号选取某个特定变量**

2.5 attach() detach()

attach():将数据框添加到R的搜索路径中

detach(): 将数据框从搜索路径中移除

2.6 With()函数

功能:使R表达式位于数据框的作用环境中

with(mtcars,{summary(mpg) plot(mpg,disp)})

2.7 实例标识符

patientdata <-data.frame(patientID, age,diabetes, status,
row.names=patientID)

通过定义数据框时指定rowname选项指定实例标识符

2.8 因子

用于对数据进行分类并将其存储为级别的数据对象

image-20221119151722445

创建因子

1 使用函数factor()将原始表示类别的字符串映射到整数上

diabetes <- factor(diabetes) 

2 创建有序的因子型向量

status <- factor(status,ordered=TRUE)

3 展示一个因子的所有水平

levels(status)

列表

列表是可以包含多个不同数据元素的数据对象

使用list()函数创建列表

Mylist <- list(obj1,obj2,obj3,…)

创建列表的同时指定每一个列表项的名称

Mylist <- list(name=obj1,name2 = obj2,…)

访问列表元素:

使用双重方括号指明代表某个成份的数字或名称使用一个方括号得到列表

Mylist[[2]]
Mylist[[“ages”]]
Mylist[2]

2.9 数据的输入和数据集标注

image-20221119152732234

从键盘输入数据:

  • 使用edit()调出文本编辑器来进行数据的输入

第三章 图形

  1. 通过par()修改图形参数
par(optionname=value,optionname=name,…)

不带参数时,将生成一个含当前图形参数设置的列表。

令参数no.readonly=TRUE,可以生成一个可修改的当前图形参

数列表。

以这种方式设定的参数值除非被再次修改,否则将会在会话结

束前一直有效

  1. 在绘图函数中直接设置
plot(dose,drugA,type=”b”,lty=2,pch=17)

image-20221119153243918

image-20221119153258382

image-20221119153454338

  1. R****中创建连续型颜色向量的函数

1 rainbow()

2 heat.colors()

3 terrain.colors

4 topo.colors

5 cm.colors()

6 gray()

  1. 文本设定与图形的设定

image-20221119153619634

image-20221119153631031

image-20221119153747564

  1. 设置坐标轴和文本标注

image-20221119153842505

image-20221119153911451

image-20221119153919773

  1. 添加刻度线、参考线和图例

使用Hmisc包中的minor.tick()函数添加刻度线。

abline(h=yvalues,v=xvalues) 添加参考线。

图例的调用格式与参数含义:

legend(location,title,legend,…)
⁻ location: 可以使用x,y坐标定位图例,也可用关键字
"bottomright", "bottom", "bottomleft", "left", "topleft", "top", 
"topright", "right" and "center"等来放置图例。
⁻ title: 图例标题的字符串
⁻ legend: 图例标签组成的字符型向量
  1. 文本标注

image-20221119154128266

  1. 图形的组合

使用par()函数进行组合:在par()函数中使用图形参数mfrow=c(rows,cols)来创建按行填充的,行数为rows、列数为cols的图形矩阵或者是按列填充的矩阵。

使用layout函数进行组合:layout(mat),使用widths和heights两个参数精确控制每幅图形的大小

第四章 数据管理

4.1 变量

• 变量名←表达式:“表达式”部分可以包含多种运算符和函数

image-20221119160323754

问题:有一个名为mydata的数据框,其中的变量为x1和x2,如何:

• 创建一个新变量sumx,存储以上两个变量的加和,

• 并创建一个新变量meanx,存储这两个变量的均值。

image-20221119160501669

image-20221119160515080

变量的重编码

根据同一个变量(和/或其他变量)的现有值创建新值的过程。

image-20221119160559464

image-20221119160620224

image-20221119160633833

变量的重命名

方法1:调用一个交互式的编辑器: fix(leadership)

方法2:以编程方式, reshape包中有一个rename()函数

image-20221119160756994

方法3:names()函数,示例: date重命名为为testDate, q5重命名为item1到item5。

4.2 缺失值

缺失值记号

• NA (Not Available,不可用)表示缺失值。

• NaN (Not a Number,非数值)表示不可能出现的值。

is.na()函数

•第一,缺失值是不可比较的,即便是与缺失值自身的比较。

•第二,R并不把无限的或者不可能出现的数值标记成缺失值。

na.omit()函数删除所有含有缺失数据的观测

类型转换

R中提供了一系列用来判断某个对象的数据类型和将其转换为另

一种数据类型的函数

• is.datatype()这样的函数返回TRUE或FALSE

• as.datatype()这样的函数将其参数转换为对应的类型

image-20221119161147795

4.3 数据排序

order()函数:对一个数据框进行排序

• 默认的排序顺序是升序

• 排序变量的前边加一个减号(-)即可得到降序的排序结果

4.4 数据集的合并

1 向数据框中添加列(变量)

• merge()函数

• bind()函数

2 向数据框中添加行(观测)

• rbind()函数

数据集的合并-添加列

• merge()函数

• 横向合并两个数据框(数据集)

• 例如:将dataframeA和dataframeB按照ID进行合并

total<-merge(dataframeA, dataframeB, by=“ID”)

• cbind()函数

• 不需要指定一个公共索引,直接横向合并两个矩阵或数据框

total<-cbind(dataframeA, dataframeB)

数据集的合并-添加行

• rbind()函数

• 纵向合并两个数据框(数据集)

• 两个数据框必须拥有相同的变量,不过它们的顺序不必一定相同

• 如果dataframeA中拥有dataframeB中没有的变量,合并之前做以下某一

种处理:

• 删除dataframeA中的多余变量

• 在dataframeB中创建追加的变量并将其值设为NA(缺失)

total<-rbind(dataframeA, dataframeB)

4.5 数据集取子集

image-20221119161445039

image-20221119161504800

image-20221119161518961

-选入观测:

取第1行到第3行(前三个观测):
newdata->leadership[1:3,]
newdata
取所有30岁以上的男性:
newdata <- leadership[leadership$gender=="M" & leadership$age > 30,]

使用whichj进行选择:

image-20221119162033850

使用subset()函数进行选择

image-20221119162101218

随机抽样

sample() 函数能够让你从数据集中(有放回或无放回地)抽取大

小为 n 的一个随机样本

• 第一个参数是一个由要从中抽样的元素组成的向量

• 第二个参数是要抽取的元素数量

• 第三个参数表示无放回抽样

mysample<- leadership[sample(1:nrow(leadership),3, replace=FALSE),]> 

第五章 高 级 数 据 管 理

5.1数值与字符处理函数

数学函数

函数描述代码示例运行结果
abs(x)x的绝对值abs(-4)4
sqrt(x)x的平方根sqrt(25)5
ceiling(x)不小于x的最小整数ceiling(3.475)4
floor(x)不大于x的最大整数floor(3.475)3
trunc(x)向0的方向截取x的整数部分trunc(5.99)5
round(x, digits=n)将x舍入为指定位的小数round(3.475,digits=2)3.48
signif(x, digits=n)将x舍入为指定的有效数字位数signif(3.475, digits=2)3.5
cos(x)、sin(x)、tan(x)x的余弦、正弦和正切值cos(2)-0.416
acos(x)、asin(x)、atan(x)x的反余弦、反正弦和反正切值acos(-0.416)2
函数描述代码示例代码运行结果
log(x, base=n)对x取n为底的对数log(10,2)3.32
log(x)自然对数log(10)2.3
log10(x)常用对数log10(100)2
exp(x)指数函数exp(2)7.39

统计函数

函数描述代码示例代码运行结果
mean(x)平均值mean(c(1,2,3,4))2.5
median(x)中位数median(c(1,2,3,4))2.5
sd(x)标准差sd(c(1,2,3,4))1.29
var(x)方差var(c(1,2,3,4))1.67
mad(x)绝对中位差mad(c(1,2,3,4))1.48
quantile(x, probs)求分位数。其中x为待求分位 数的数值型向量, probs为一 个由[0,1]之间的概率值组成 的数值向量y<- quantile(x, c(.3,.84))
range(x)求域值如 果 : x<-c(1,2,3,4) 则range(x)14
sum(x)求和sum(c(1,2,3,4))10
函数描述代码示例运行结果
diff(x, lag=n)滞后差分,lag指明滞后几项,默认的 lag值为1x<-c(1,5,23,29) diff(x)4,18,6
min(x)最小值 十min(c(1,2,3,4))
max(x)最大值 +max(c(1,2,3,4))4
scale(x, center = TRUE, scale=TRUE)为数据对象x按列进行中心化 (center=TRUE)或者标准化 (center=TRUE, scale=TRUE)

概率分布函数

分布名称缩写分布名称缩写
Beta分布betaLogistic分布logis
二项分布binom多项分布multinom
柯西分布cauchy负二项分布nbinom
(非中心)卡方分布chisq正态分布norm
指数分布exp泊松分布pois
F分布fWilcoxon符号秩分布signrank
Gamma分布gammat分布t
几何分布geom均匀分布unif
超几何分布hyperWeibull分布weibull
对数正态分布lnormWilcoxon秩和分布wilcox

image-20221119163624607

5.2 字 符 处 理 函 数

image-20221119164347777

image-20221119164403416

image-20221119164423993

其他实用函数

image-20221119164444266

5.3 控制流语句

语句(statement)是一条单独的R语句或一组复合语句(包含

在花括号{ } 中的一组R语句,使用分号分隔)

条件(cond)是一条最终被解析为真(TRUE)或假(FALSE)

的表达式

表达式(expr)是一条数值或字符串的求值语句

序列(seq)是一个数值或字符串序列

image-20221119164540160

image-20221119164551133

image-20221119164559147

5.4 自定义函数

自定义函数的一般形式:
myfunction <- function(arg1, arg2……){statements return (object)}

第六章 基本图形

条形图

使用barplot()绘制

➢格式:barplot(height)

• height是一个向量或者一个矩阵

−向量:简单条形图

−矩阵:堆积条形图

• 默认绘制垂直条形图

image-20221119164925428

➢棘状图:一种特殊的条形图,对堆砌条形图进行了重缩放,这样

每个条形的高度均为1,每一段的高度表示比例。

➢使用vcd包中的spine()函数绘制

➢格式:spine(height,…)

饼图

➢使用pie函数绘制

➢格式:pie(x,labels)

• x:非负数值向量,表示每个扇形的面积

• labels:各扇形标签的字符型向量

扇形图

➢使用plotrix包中的fan.plot函数绘制

➢格式:fan.plot(x,labels)

• X:非负数值向量,表示每个扇形的面积

• labels:各扇形标签的字符型向量

➢扇形张开角的大小表示相对比例关系

直方图

image-20221119165045725

核密度图

用于描述连续型随机变量概率密度的一种方法

使用density()生成核密度估计值

density(x)

一般与绘图函数连用:plot(density(x))

image-20221119165126186

➢常用于比较组间差异

➢使用sm包的sm.density.compare()函数向图形叠加多组核密度

➢使用格式:

• sm.density.compare(x,factor)

• x是一个数值型向量

• factor是一个分组变量

箱线图

又称盒须图,通过绘制连续型变量的5数总括来描述了连

续型变量的分布

使用boxplot函数绘制箱线图

boxplot(x,…)

如何得到中位数、最大值、最小值、上下四分位数

boxplot.stats(x)

展示单个变量或分组变量:

boxplot(formula,data=dataframe)
formula:一个公式,形如y~A
dataframe:提供数据的数据框或列表数
varwidth:为TRUE时,箱线图的宽度与其样本大小的平方根成正比
horizontal:为TRUE可以反转坐标轴的方向

小提琴图

箱线图的一个变种,是箱线图和核密度图的结合

使用vioplot函数绘制

vioplot(x1,x2,…,names=,col= )
• x1,x2,…:要绘制的一个或多个数值向量
• names:小提琴图中标签的字符向量
• col:一个颜色向量,指定每副小提琴图的颜色

image-20221119165418726

点图

一种在简单水平刻度上绘制大量有标签值的方法

使用dotchart()函数绘制

dotchart(x,labels=)
x:数值型向量
labels:由每个点的标签组成的向量
可选参数:groups,gcolor,cex

image-20221119165448454

注意:点图整的分好组以后超级好看 值得深入学习。

第七章 基本统计分析

7.1 描述性统计分析

使用summary()计算描述性统计量

image-20221119165625254

使用sapply()计算所选择的任意描述性统计量

image-20221119165615349

• n 观测数

• mean 均值

• stdev 标准差

• skew 偏度

• kurtosis 峰度

使用aggregate()分组获取描述性统计量:

image-20221119165647068

使用by()分组计算描述性统计量:

image-20221119165700225

7.2 频数表和列联表

image-20221119165725107

• 一维列联表
    • 生成简单的频数统计表:mytable <- table(Arthritis$Improved) 
    • 查看治疗效果:mytable
    • 查看治疗效果的比例: prop.table(mytable)
    • 查看治疗效果的百分比:prop.table(mytable)*100
    • 求和:margin.table(mytable)
    • 求和,将结果加入表中:addmargins(mytable)
• 二维列联表
    • 使用table()创建二维列联表: table(Arthritis$Treatment,Arthritis$Improved)
    • 使用xtabs()创建二维列联表: mytable <- xtabs(~Treatment+Improved, Arthritis); 
    • 生成边际频数:margin.table(mytable, 1); margin.table(mytable,2)
    • 生成边际比例:prop.table(mytable,1)*100;prop.table(mytable,2)*100
    • 查看每个单元格所占比例: prop.table(mytable) 
    • 添加边际和: addmargins(mytable)
    • 添加边际比例和: addmargins(prop.table(mytable) )
    • 仅添加了各行的比例和: addmargins(prop.table(mytable,1),2 )
    • 仅添加了各列的比例和: addmargins(prop.table(mytable,2),1 )
    • 三方包gmodels中的CrossTable()函数:
    CrossTable(Arthritis$Treatment,Arthritis$Improved)
• 多维列联表
    • 使用table()创建多维列联表:
    with(Arthritis,table(Treatment, Sex, Improved))
    • 使用xtabs创建多维列联表:
    mytable <- xtabs(~Treatment+Sex+Improved, data=Arthritis)
    • 使用ftable()对三维列表输出格式进行美化: ftable(mytable)
    • 为治疗情况、性别和改善情况生成了边际频数:margin.table(mytable,1);
    margin.table(mytable,1);margin.table(mytable,1)
    • 为治疗情况× 改善情况分组的边际频数,由不同性别的单元加和而成:
    margin.table(mytable,c(1,3))
    • 每个Treatment × Sex组合中各类改善情况的比例:
    ftable(prop.table(mytable, c(1,2 )))	

独立性检验

R提供了多种检验类别型变量独立性的方法

• 卡方独立性检验

​ • chisq.test( )函数可对二维表的行变量进行卡方独立性检验。

• Fisher精确检验

​ • fisher.test( )函数可进行FIsher精确检验。

• Cochran-Mantel-Haenszel检验

​ • mentelhaen.test( )函数可用来进行Cochran-Mantel-Haenszel卡方检验。

对二维表的行变量和列变量进行卡方独立性检验。示例:
1. mytable <- xtabs(~ Treatment + Improved, data = Arthritis)
chisq.test(mytable)
• p<0.01,患者接收的治疗和改善的水平可能存在某种关系
2. mytable <- xtabs(~ Improved + Sex, data = Arthritis)
chisq.test(mytable)
• p>0.05,患者性别和改善情况之间互相独立
• Fisher精确检验的原假设是:边界固定的列联表中行和列是相互
独立的。 例:
mytable <- xtabs(~ Treatment + Improved, data = Arthritis)
fisher.test(mytable)
进行Cochran—Mantel—Haenszel卡方检验,其原假设是,两个名
义变量在第三个变量的每一层中都是条件独立的。例:
mytable <- xtabs(~ Treatment + Improved + Sex, data = Arthritis)
mantelhaen.test(mytable)

相关性度量

assocstats()函数可以用来计算二维列联表的phi系数、列联系数和

Cramer’s V系数。

mytable <- xtabs(~ Treatment + Improved, data = Arthritis)
assocstats(mytable)

相关的类型-Pearson、pearman、Kendall:

​ • Pearson积差相关系数衡量了两个定量变量之间的线性相关程度

​ • Spearman等级相关系数则衡量分级定序变量之间的相关程度

​ • Kendall’s Tau相关系数也是一种非参数的等级相关度量

偏相关是指在控制一个或多个定量变量时,另外两个定量变量之

间的相互关系。

pcor(c(1,5,2,3,6),cov(states))

另外,polycor包中的hetcor( )函数可以计算一种混合的相关矩阵,其中

包括:

​ • 数值型变量的Pearson积差相关系数、

​ • 数值型变量和有序变量之间的多系列相关系数、

​ • 有序变量之间的多分格相关系数以及二分变量之间的四分相关系数。

相关性检验(重要)

得到相关系数后,进行统计显著性检验

• 常用的厡假设为变量间不相关(即总体的相关系数为0)

cor.test( )函数
• 对单个的Pearson、Spearman和Kendall相关系数进行检验。
• 使用格式:
cor.test(x, y, alternative = , method = )
• x和y为要检验相关性的变量,
• alternative则用来指定进行双侧检验或单侧检验(取值为“two.side”、
"less"或"greater"),
• method用以指定要计算的相关类型
独立样本的t检验:

针对变量为连续型的组间比较,并假设其呈正态分布。

• 检验的调用格式,其中y是一个数值型变量, x是一个二分变量:

t. test (y ~ x, data)

非独立样本的t检验

• 假定组间的差异呈正态分布

• 检验的调用格式为, y1y2为两个非独立组的数值向量 :

t. test(y1, y2, paired = TRUE)

Wilcoxon秩和检验

若两组数据独立,可以使用Wilcoxon秩和检验来评估观测是否是从相

同的概率分布中抽得的。

• 调用格式为:wilcox.test(y ~ x, data)

• 其中的y是数值型变量,x是一个二分变量。

第八章回归分析

image-20221119170621936

R中,拟合线性模型最基本的函数是lm():

myfit <- lm(formula, data)
• formula指要拟合的模型形式 lm()函数中formula的形式一般为 Y~X1+X2+…+Xk
• data是一个数据框,包含了用于拟合模型的数据
• myfit是结果对象,存储在一个列表中

image-20221119170716148

image-20221119170724112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值