🐱🐉🐱🐉🐱🐉一起来干R语言,冲冲冲!!!
🤗🤗🤗欢迎大佬们来指点指点鸭~~~
参考资料:
1.多元统计分析及R语言建模(第五版),王斌会 编著。
2.R语言实战
文章目录
- 一、R安装及配置
- 1.1 R安装
- 1.2 编辑器选择
- 二、基本使用
- 2.1数据管理
- 2.1.1 数据矩阵R表示
- 2.1.2 数组
- 2.1.3 运算符
- 2.1.4 数据框
- 2.1.5 数据调用
- 2.2 包的使用
- 2.3 输出/拼接
- 2.4 R可视化
- 2.4.1 常用图形
- 2.4.2 图形保存
- 2.4.3 图形参数
介绍一下:R基于内存,源自于S语言,R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。有一说一,用它作图是真香。
- R的资源
R的主页
R的博客
CRAN
书籍:《数据挖掘与R语言》《R语言实战》《R语言编程艺术》
一、R安装及配置
1.1 R安装
- 可直接在R主页中下载
- 进去后随便进一个镜像
- 然后Download for ×××
- 进去后点base
- 然后就可以选下载版本啦
- 安装就是一直点就行啦
1.2 编辑器选择
- 也可以不用
- Rstudio:也是直接从官网下载就好啦!
- Jupyter notebook:这个需要下载Python或者Anaconda,直接cmd后pip jupyter notebook,它是IPython形式,用起来挺得劲儿。要是就做简单数据分析,可以直接使用Jupyter云计算平台
要是觉得还要下载来下载去麻烦。直接在vs上也是可以肝的
- 在VScode或Pycharm中使用R:R语言环境+小插件(R Language for intellij),小插件直接在这两编辑器中下很快的,创个新项目就能用了
二、基本使用
不哔哔,直接开干。
其他的常用操作
#打开工作空间
setwd("c:/Users/") #设置临时目录
getwd() #查看工作目录#以前的命令
history()#内存
memory.limit() #查看内存大小
memory.limit(n) #申请内存大小
memory.size(NA) #查看NA所占内存
memory.size(T) #查看已分配内存
memory.size(F) #查看已使用内存# 键盘 ctrl+L 清屏
rm(list=ls()) #清除workplace中所有变量
rm(x) #从workplace清除变量x
gc() #清除内存垃圾
2.1数据管理
2.1.1 数据矩阵R表示
小tips:创建向量时,数据类型要一致,虽然可以数字、字符串放在同一向量里面,但是数字的类型就会变成字符型而非数值型。
#请求帮助:
help.start()
help("***")
?***
example(function_name) #查看方法用例#创建向量:c()
x<-c(1,2,3,4,5);
y<-seq(1,5,length=10); #从1~5得到10个等间距数
z<-seq(1,5,by=0.5); # 1.0 1.5 2.0 .... 4.5 5.0
m<-rep(1:3,2); # 1 2 3 1 2 3
n<-rep(1:3,rep(2,3)); # 1 1 2 2 3 3
#创建矩阵:matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
# byrow:是否按行排列,dimnames:给行、列的名字
A<-matrix(c(1,2,3,4),nrow=2,ncol=2);#转置:t() or transpose()
B=t(A);#相乘:%*%
C=A%*%B;#对角运算:diag()
diag(A); #获得矩阵对角元素
diag(3); #创建3阶单位矩阵
diag(c(1,2,3)); #创建对角阵#逆:solve(A,b)解线性方程组AX=b,当b缺少时默认为单位阵
solve(A);#特征值:eigen(x,symmetric,only,values=FALSE,EISPACK=FALSE)
# x为矩阵,symmetric指定x是否是对称阵,不指定会自动检测哒~
A.e=eigen(A); #求矩阵特征值 $values 特征向量 $vectors
# D=UMU'
A.e$vectors%*%diag(A.e$values)%*%t(A.e$vectors)#奇异值分解:svd() A=UDV'
A=matrix(1:18,3,6);
A.s=svd(A); #结果:$d $u $v
A.s$u%*%diag(A.s$d)%*%t(A.S%V);#其他
dim(A); #维数
nrow(A); #行数
ncol(A); #列数sum(A); #求和
rowSums(A); #按行求和
colSums(A); #按列求和mean(A); #均值
rowMeans(A); #按行求均值
colMeans(A); #按列求均值
2.1.2 数组
数组的维度可以大于2,说白了还是矩阵推广。
?array;
dim1=c("a1","a2","a3");
dim2=c("b1","b2");
dim3=c("c1","c2","c3","c4");
A=array(1:24,c(3,2,4),dimnames=list(dim1,dim2,dim3)); #相当于4个矩阵
2.1.3 运算符
跟其他语言的大同小异
#基本运算
+ - * / ^
%% #求余
%/% #整除#关系运算符
< > == != >= <=#逻辑运算
&& || !#其他
%in% #判断元素是否在向量中,返回布尔值
2.1.4 数据框
上面的向量中数据类型必须是一样的,要想同时存放不一样类型数据就可以用到数据框。
数据框是一种矩阵形式的数据,但各列可以是不同类型的数据,数据框每列是一个变量,每行是一个观测。
可列入数据框的列表对象的一些限制:
- 各列可以是不同类型的数据,但一列中各元素数据类型要一致。
- 分量必须是向量(数字、字符、逻辑)、因子、数值矩阵、列表或其他数据框。
- 矩阵、列表和数据框为新的数据框提供了尽可能多的变量。
- 数值向量、逻辑值、因子保持原有格式,但字符向量会被强转成因子并且它的水平就是向量中出现的独立值。
- 在数据框中以变量形式出现的向量长度必须一致,矩阵结构必须有相同的行数。
#生成数据框:data.frame(data1,data2,...)
data1=c(1,2,3);
data2=c(4,5,6);
Y=data.frame('name1'=data1,'name2'=data2);rbind(data1,data2); #按行合并
cbind(data1,data2); #按列合并# 按行显示
# head() tail() 可以分别显示数据框的前后若干(默认6)行数据,形成新的数据框
head(Y);
tail(Y);#数据框应用:apply(X,MARGIN,FUN)
# X为数据框或矩阵,MARGIN=1表示对行做运算,MARGIN=2表示对列做运算,FUN指定运算函数。如:
Xr=apply(Y,2,sum);#获取数据框某些列
Y[1:2]; #获取第一、二列
Y[c("name1","name2")]; #获取列名name1、name2的列# 使用sql语句操作数据框
library(sqldf)
newdf <- saldf("sql语句",row.names=TRUE)
2.1.5 数据调用
小tip:美元符号“$”实现数据读取,也可以用 attach() 代替。
# 使用 $
mtcars$mpg #获取数据框matcars中变量mpg的数据# attach()
attach(mtcars);
mpg;
detach(matcars); #用完再关# with()与attach()用法相似,局限在with的大括号内,一般用的少
with(matcars,{
+l<-mpg
+l}
+);#类别型的向量转化为数值型:factor()
datatype=c("type1","type2","type3");
datatype=factor(datatype);#列表整合:mylist=list(object1,object2,...);
从外部录入数据的方法:
- 从Excel中直接复制到剪切板上,从剪切板读取。
#clipboard是剪切板,header=T指定第一行是标题
data1=read.table("clipboard",header=T)
- 从文本文件读取,比如csv格式文件
#row.names是否包括行号,默认包括
write.csv(X,file='filename',row.names=F);
read.csv('filename')
- 从Excel表格读入数据
用的最多的还是Excel,多组数据可以保存在一个Excel工作簿的不同数据表sheet里,但是R语言读取Excel数据要下包openxlsx。
install.packages("openxlsx"); #没有这个包就要下载,有就从下面一行开始执行
library(openxlsx); #把安装好的包导入到当前的工作环境中
d2.1=read.xlsx('****.xlsx','d2.1'); #读取****.xlsx表格中的d2.1数据
tail(d2.1); #显示后6行
2.2 包的使用
R语言中的包可谓是多种多样,在调动别人的包时,有版本要求,有的还基于另外的包,有时下载有点多。
install.packages("packagesname"); #没有这个包就要下载,有就从下面一行开始执行
library(packagesname); #把安装好的包导入到当前的工作环境中,这里别加引号
#然后就可以使用包里面的函数了update.packages(); #把所有的包都给他更新了
update.packages("packsgesname");
2.3 输出/拼接
这里的输出是matlab里面的矩阵串联函数 cat() ;不要弄混啦
# 输出
print("给小椰_T点点关注吧")
cat("小椰是","小椰_T",sep="is")#拼接
res=paste("跟小椰","一起","冲冲冲") #返回的是字符串,非字符串类型会自动转化成字符串
2.4 R可视化
2.4.1 常用图形
- 展示定量数据常用:直方图。
- 描述两个变量之间的关系最常用:散点图。
- 定性变量的分析:列联表。
- 箱尾图:比较清晰地表示数据的分布特征。
- 箱子上下的横线为样本的25%和75%分位数,箱子顶部和底部的差值为四分位间距。
- 箱子中间的横线为样本的中位数,若这条横线没有在箱子中央,说明样本数据存在偏度。
- 箱子向上或向下延伸的直线称为“尾线”,若没有异常值,样本的最大值为上尾线的顶部,样本最小值为下尾线的底部。默认情况距离箱子顶部或底部大于1.5倍四分位间距的值为异常值。
- 箱子顶部的圆圈表示该处数据为一异常值。
- 星相图将每个变量的各个观察单位的数值表示为一个图形。
#直方图:hist(x,freq=NULL,...) freq表示绘制频数/频率直方图,默认频数
hist(x1);#散点图:plot(x,y,...) 当仅有x时,以序号为横坐标,x为纵坐标
plot(x,y);#列联表:table(...) 一列或多列定性数据
d2.1=read.xlsx('****.xlsx','d2.1');
attach(d2.1); #绑定数据,绑定数据框后其中的变量名可以直接使用,用完最好解绑 detach();
table(name1);
table(name1,name2); # 2维列联表
ftable(name1,name2,name3); # 3维列联表barplot(table(name2),col=num1:num2); #条形图
pie(table(name3)) #饼状图#箱尾图:boxplot(x,...) x为数据框
boxplot(d2.1,horizontal=T); #水平放置#星相图:stars(x,full=True,draw.segments=FALSE,...)
# full:图的形状 full=TRUE:圆形;full=FALSE:半圆形
# draw.segments:分支形状 draw.segments=TRUE:圆形;draw.segments=FALSE:半圆形
stars(d2.1,full=T,key.loc=c(num1,num2));#其中key.loc=c(num1,num2,num3)用于指定标准星图的位置#脸谱图:faces(x,nrow.plot,ncol.plot,...)
# x 为数值矩阵,每列代表一个变量;
# nrow.plot 图形显示的行数;ncol.plot 图形显示的列数;
library(aplpack); # TeachingDemos包的faces2()还可以绘制黑白脸谱。
faces(d2.1,ncol.plot=7);
2.4.2 图形保存
可以通过代码或图形来保存图形。将绘图语句夹在开启目标图形设备的语句和关闭图形设备的语句之间。
# 保存格式:pdf()、png()、jpeg()、bmp()、xfig()、tiff()、postscript()、win.metafile()
pdf("xiaoye.pdf");
# 绘图语句
dev.off()
2.4.3 图形参数
图形参数可以帮我们自定义一个图形的特征。
- 函数 par()
这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。
# par(optionname=value,optionname=name,...)
dose <- c(20,30,40,45,60);
druga <- c(16,20,27,45,60);
drug <- c(15,18,25,31,40);
opar <- par(no.readonly=TRUE); # 生成一个可以修改的,当前图形参数列表
par(lty=2,pch=17); # 线条类型改为虚线lty=2,点符号改为实心三角pch=17
plot(dose,druga,type="b");
par(opar); #还原了原始数据
- 符号和线条参数
pch | 指定绘制时使用的符号,0~25 |
---|---|
lty | 指定线条类型 |
cex | 指定符号大小,cex是一个数值表示符号对于默认值的倍数 |
lwd | 指定线条宽度,lwd是以默认值(1)的相对大小来表示,lwd=2生成一条比默认宽度宽2倍的线条 |
下图来自《R语言实战》
- 颜色
col | 默认的绘图颜色,某些函数(如lines和pie)可以接受一个含有颜色值的向量并循环使用,如col=c(“red”,“blue”)绘制三条线,第一条为红,第二条为蓝,第三条为红。 |
---|---|
col.axis | 坐标轴可读文字的颜色 |
col.lab | 坐标轴标签的颜色 |
col.main | 标题颜色 |
col.sub | 副标题颜色 |
fg | 图形的前景色 |
bg | 图形的背景色 |
在 R 中表示颜色有多种方式,十六进制的颜色值、RGB值或HSV值、颜色名称都可以来指定颜色。
- 文本属性
指定字号、字体、字样。
cex | 表示相对于默认大小缩放的倍数,默认值为1 |
---|---|
cex.axis | 坐标值刻度文字的缩放倍数 |
cex.lab | 坐标值标签的缩放倍数 |
cex.main | 标题的缩放倍数 |
cex.sub | 副标题的缩放倍数 |
font | 整数。用于指定绘图使用的字体样式。常规=1、粗体=2、斜体=3、粗斜体=4、符号字体=5 |
font.axis | 坐标轴刻度文字的字体样式 |
font.lab | 坐标轴标签的字体样式 |
font.main | 标题的字体样式 |
font.sub | 副标题的字体样式 |
通过函数 text() 和 mtext() 将文本添加到图形上。
text(location,"text to place",pos,...);
mtext("text to place",side,line=n,...);
location | 文本的位置参数,可以是坐标(x,y),或鼠标交互式地确定摆放位置 |
---|---|
pos | 文本相对于位置参数的方位。上下左右=1234,还可以同时指定offset=偏移量。以相对于单个字符宽度的比例表示 |
side | 指定用来放置文本的边。上下左右=1234 |
数学公式用Tex公式的写法表示。看即时效果可以尝试demo(plotmath)。
- 图形/边界尺寸
pin | 以英寸表示的图形尺寸 |
---|---|
mai | 以数值向量表示的边界大小,顺序:下左上右,单位英寸 |
mar | 同上,单位英分(1/12英寸),默认值c(5,4,4,2)+0.1 |
🐴🦓🦄正片正在快马加鞭赶来~~~
🐱🏍🐱🏍🐱🏍冲冲冲