目录
一、R基本操作
1.基本命令:
设置工作路径:setwd("D:\\r学习")或者setwd("D:/r学习")
获取当前目录文件列表,类似于Linux下的ls:list.files()同dir()
列出当前的环境变量:ls(),若使用ls.str(),列出环境变量同时还会列出值,ls(all.names = TRUE)是是否包含隐藏属性
删除对象:rm(a)或rm(a,b,c)或删除全部的rm(list=ls())
R查找资料、解决问题的好网站:Google、Rblogger、quickR、stackoverflow等
2.包管理:
R包的安装:联网的在线安装以及源代码安装,例如install.packages('vcd')
列出当前环境已经安装了的R包:installed.packages(),列出名字,也就是第一列installed.packages()[,1]
获取包的帮助(更标准但是有这种文档的包比较少):vignette("xts")
把包从内存中移除:detach("package:vcd")
彻底删除某个包(从硬盘上删除):remove.packages("vcd")
3.数据集管理:
列出某个包中包含的所有数据集:data(package="vcd"),直接data()查看所有数据集
列出R中所有可用的数据集:data(package=.packages(all.available = TRUE))
加载某个数据集:data(Chile,package="car")
4.函数管理:
列出某个包中包含的所有函数:ls("package:vcd")
搜索函数(可用正则表达式):help.search("heatmap")
列出包含某个关键字的内容(如同linux的grep,本地搜索):apropos("sum"),例如如果加上mod可以控制搜索的类型,例如aprops("sum",mod="function")
列出包含某个关键字的内容(如同linux的grep,网络搜索):RSiteSearch("sum")
查看某个函数的帮助(函数所在的包已经加载了):help(sum)或?sum
5.链式操作符%>%:
类似于Linux中的管道符,它在R中的写法是两个百分号中间夹着一个大于号,用于实现将一个函数的输出传递给下一个函数,作为下一个函数的输入,在Rstudio中可以使用ctrl+shift+M快捷键输出。
例如:head(mtcars,20) %>% tal(10)
二、R包的组成
三、对旧R环境进行迁移(迁移旧环境安装了的R包)
Rpackages <- installed.packages()[,1]
save(Rpackages,file="Rpackages.Rdata")
for(i in Rpackages) install.packages(i)
四、R数据结构
1.数据结构简介:
数据结构是计算机存储、组织数据的方式,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,一般有:
2.R对象简介:
object,它是指可以赋值给变量的任何事物,包括常量、数据结构、函数、图形等,对象都拥有某种模式,描述了此对象是如何存储的,以及某个类。
3.R中的数据结构:
(1)向量:
vector,R中的重要概念,是构成其他数据结构的基础,R中的向量概念与数学中的向量概念是不同的,类似于数学上集合的概念,有一个或者多个元素所构成,向量是用于存储数值型、字符型或者逻辑型的一维数组。
向量的创建使用函数c来,c代表concatenate连接,也可以理解维收集collect或者合并combine。向量中的元素必须为统一数据类型。
b <- seq(from=1,to=100,length.out=3)
向量索引:
根据元素在集合中的位置来访问。R中的元素位置是从1开始的。负数表示除了这个元素之外的所有元素。
例如x[c(T)]是每个元素都会循环使用T,都输出,如果是x[c[T,F]]那就是循环后只输出正好循环到T上的元素。
向量的增删改:
删除某个元素:ceshi <- ceshi[-c(1:3)]
向量的运算:
两个向量长度不等的向量运算时,其中一个向量的长度必须是另外一个的整数倍数才能运算:
其他向量运算的函数更多的可以查看第八章:
signif(x,digits = 2):四舍五入,digits是有效数字数
which.:例如which.max(x),返回的是位置,最大值的索引值,还有就是which(x>3),返回的是索引
(2)矩阵和数组:
矩阵Matrix是一个按照长方阵列排列的负数或实数集合,向量是一维的,矩阵是二维的,需要有行和列。
在R中,矩阵是由维数的向量,这里的矩阵元素可以是数值型、字符串型或者逻辑型,但是每个元素必须都拥有相同的模式,这个和向量一致。
创建一个四行五列并按照行排序的矩阵:matrix(1:20,nrow = 4,ncol = 5,byrow = T)
访问矩阵的数据的方式:
矩阵的运算:
(3)列表:
它是用来存储很多内容的一个集合,在其他编程语言中,列表和数组一般是等同的,但是在R中,是最复杂的一种数据结构,也是非常重要的一种数据结构。列表就是一些对象的有序集合,列表中可以存储若干向量、矩阵、数据框、其他列表等。
向量与列表的对比:
2.向量只能存储一种数据类型,列表中的对象可以是R中的任何数据结构,甚至列表本身。
列表的创建:
列表的访问:
通过名字来访问:state.center(c("first","fds"))或者更高效的li$first
li[1]和li[[1]]返回的结果是一样的,但是前者返回的数据类型还是列表,后者输出的则是元素本身的数据类型。
删除元素:li[[1]]使用负数去掉不要的然后重新赋值,或者li[[1]] <- NULL。
(4)数据框:
数据框是一种表格式的数据结构,数据框旨在模拟数据集,与其他统计软件SAS、SPASS等中的数据集概念一致,数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量,不同的行业对于数据集的行和列叫法不同。
数据框实际上是一个列表,列表中的元素是向量,这些向量构成数据框的列,每一列必须有相同的长度,所以数据框是矩形结构,而且数据框的列必须命名。
数据框的特点:
数据框创建:
访问数据框:
attach()函数将数据框加载到当前的搜索目录中,加载完之后可以直接通过列名访问:
with()函数类似,不过操作例如:with(women,{height})
(5)因子:
因子主要用在:计算频数、独立性检验、相关性检验、方差分析、主成分分析、因子分析等。
变量分为:
名义型变量:没有顺序的分别,相互独立,例如省份中的河南、河北等。
有序性变量:基于上诉两种之间,不同值之间有顺序关系,例如good better best等,知道它是递增的。
一般数值类的数据更容易为连续性变量,字符串型数据更容易为名义型变量。
因子:在R中名义型和有序型变量被称为因子,factor。这些分类变量的可能值称为一个水平,level,例如good better best,都称为一个level。由这些水平值构成的向量就称为因子。
例如table(mtcars$cyl),以cyl做因子,相当于sql中的group by这个字段,算出的结果就是count(*)。
定义因子:
f <- factor(c(...),ordered = T,levels = c("","",""...))
(6)字符串:
字符串处理:
字符串操作函数:
paste(c("c","b","a"),sep = ","):合并为一个
(7)日期与时间:
时间序列分析作用包括:
时间日期相关的函数:
as.Date("2021-11-16",format = "%Y-%m-%d"):转为时间类型,具体参数可以看?strftime
seq(as.Date("2020-11-16"),as.Date("2021-11-16"),by = 5):生成时间序列
五、缺失数据的介绍以及处理
缺失数据的分类:
统计学家通常将缺失数据分为三类。它们都用概率术语进行描述,但思想都非常 直观。我们将用sleep研究中对做梦时长的测量(有12个动物有缺失值)来依次阐述三种类型。
1.完全随机缺失,若采变量的缺失数据与其他任何观测或未观测变量都不相关,则数据为完全随机缺失(MCAR)。若12个动物的做梦时长值缺失不是由于系统原因,那么可认为数据是MCAR。注意,如果每个有缺失值的变量都是MCAR,那么可以将数据完整的实例看做是对更大数据集的一个简单随机抽样.
2.随机缺失,若某变量上的缺失数据与其他观测变量相关,与它自己的未观测值不相同,则数据为随机缺失(MAR)。例如,体重较小的动物更可能有做梦时长的缺失值(可能因为较小的动物较难观察),“缺失”与动物的做梦时长无关,那么该数据就可以认为是MAR。此时,一旦你控制了体重变量,做梦时长数据的缺失与出现将是随机的。
3.非随机缺失 若缺失数据不属于MCAR或MAR,则数据为非随机缺失(NMAR)。例如,做梦时长越短的动物也更可能有做梦数据的缺失(可能由于难以测量时长较短的事件),那么数据可认为是NMAR。
R对缺失值的处理:
R中,NA代表的缺失值,NA是不可用,not available的简称,用来存储缺失信息。NA表示没有,但注意没有并不一定代表0,NA是不知道代表多少,也有可能是0,也有可能是任何值,缺失值和值为零是完全不同的。例如1 + NA返回的还是NA。很多统计函数都有na.rm参数,例如sum(x,na.rm = T)代表跳过NA值。Inf表示无穷,分为正无穷Inf和负无穷Inf,表示无穷大和无穷小。
判断是NA还是Inf,例:is.nan(0/0),is.infinite(1/0)
它处理数据集时,会将包含NA的行都删除掉,有时候会对实验效果照成很大影响,所以有专门的处理步骤方法:
六、R获取与写出数据:
1.获取数据的三种途径:
利用键盘来输入数据:
增加完之后关闭即可,此时data2就有数据了,也可以fix(data2)调出来修改,fix()函数会直接保存。
通过读取存储在外部文件上的数据:
读取剪切板的数据:
read.table("clipboard",header = T,sep = ",")
读取txt纯文本文件:
默认是空格分隔符,修改使用sep参数,header函数为TRUE表示文本第一行为名称,skip参数表示跳过前多少行,nrows表示读取到多少行,参数na.strings处理缺失值,告诉R,文本中的什么样的数据为缺失值,他会处理成NA,stringsAsFactors控制是否将字符串转化为因子,默认是转化,一般给他改为FALSE。
read.table("input.txt",sep = ",",header = TRUE,skip=5,nrows=100)
读取网络文件:
将txt纯文本文件的第一个参数改为http或https的URL即可。
XML包可以来读取HTML的文件例如readHTMLTable("URL",which = 3)
读取压缩文件:
不用提前解压缩,可以直接例如读取gz压缩的文件:read.table(gzfile("input.txt.gz"))
读取Excel文件:
第一步,读取Excel文件:ex <- loadWorkbook("data.xlsx")
第二步,读取具体的工作表:edata <- readWorksheet(ex,1)
不用上面的两步走,用一步来解决的:readWorksheetFromFile("data.xlsx",1)
读取其他:
readLines("input.csv",n=5),按照行读取文件,读取5行。
scan("scan.txt",what = list(x1 = character(3),x2 = numeric(0),x3 = numeric(0)))
2.R写数据入文件:
row.names = False参数可以设置写入时不加行号,模式是加。
R写入Excel文件:
第一步,创建Excel文件:wb <- loadWorkbook("file.xlsx",create = T)
第二步,创建工作表:createSheet(wb,"Sheet1")
第三步,保存数据至工作表:writeWorksheet(wb,data=mtcars,sheet = "Sheet1")
不用上面的四步走,用一步来解决的:writeWorksheetToFile("file.xlsx",data=iris,sheet = "sheet1")
write.xlsx(iris,file = "test.xlsx",sheetName = "sheet1",apped = F)
3.R读写R格式文件:
存储为R文件会有很多优势,R会对存储为内部文件格式的数据进行自动压缩处理,并且会存储所有与待存储对象相关的R元数据。若数据中包含了因子,日期和时间或者类的属性等信息也适用。
保存单个对象:saveRDS(iris,file="iris.RDS")
保存多个对象:save (iris,iris3,file = "test.RData")
七、R数据转换
as.data.frame():强制转换为数据框,例如矩阵转为数据框比较方便。
提取1,3,5,8行,2,14列:x[c(1,3,5,8),c(2,14)]
过滤,例如:x[which(x$num==7)] 或 x[which(x$num==7 & x$id>9)]
subset()取子集:subset(who,x$num==7 & x$id>9)
sample()随机抽样,replace参数默认是true,每个数字返回一次:
删除固定行:
数据框的合并:
重新生成一个新的数据框:data.frame(USArrests,state.division)
取出重复的部分data1[duplicated(data1)],取出不重复的部分data1[!duplicated(data1)]还可以使用unique()函数直接去重。
数据框的反转:
反向一行数据:rev(),数据框每行数据翻转则women[rev(rownames(women)),]
修改某列的值:transform(women,height(cm)=height*2.54)
排序:sort()直接返回排序号的值,order()排序返回排序好的值的索引。数据集排序也可以这样mtcars[order(mtcars$mpg),]
apply系列函数:
apply适用于数据框或矩阵,参数MARGIN的1代表对行进行处理,2代表对列进行处理。
数据的中心化与标准化:
数据标准化:指在中心化之后再除以数据集的标准差(sd函数算出来标准差),即数据集中的各项数据减去数据集的均值再除以数据集的标准差。
使用reshape2包进行数据的转换:
melt函数指定id列:melt(airquality,id.vars = c("month","day"))
使用tidyr包进行数据的转换:
使用dplyr包进行数据的转换:
dplyer::filter(iris,Sepal.Length > 7)
summarise():统计函数,例如summarise(iris,sum=sum(Sepal.Length))
mutate():增加新的一列,例如mutate(iris,new=Sepal.Length+Petal.Length),增加新的一类为new,new的值为两个Length的和
八、R函数简介
计算函数简介:
R绘图函数简介:
基础绘图系统:
基础绘图函数都在graphics包中,ls("package:graphics")查看其中的函数。
高级绘图指一步到位,可以直接绘制出图。低级绘图则不能单独使用,必须在高级绘图产生的基础上对图形进行调整,比如加一条线,加上标题文字等等。
散点图接收x和y的两个坐标数据,直方图接收因子,热力图接收数据矩阵。
lattice包:
ggplot2包:
grid包:
与数学统计相关的函数简介:
概率论是统计学的基础,R有许多用于处理概率,概率分布以及随机变量的函数,R对每一个概率分布都有一个简称,这个名称用于识别与分布相联系的函数,这部分涉及到很多统计学基础的理论知识,比如随机实验、样本空间、对立与互斥、随机事件与必然时间、概率密度、概率分布等。
正太分布相关的函数:
rnorm:正态分布的随机数函数,例如生成均值为15,方差为2的100个随机数:
离散分布相关的函数:
统计检验函数:
runif(x,min=1,max=50),生成0-1的随机x个数,可以使用set.seed()函数性进行绑定,例如:
> state <- as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")]) > > class(state) [1] "data.frame" > fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,data = state) > summary(fit)
描述性统计函数:
summary(myvars),对数据集进行详细统计,类似的还有fivenum() ,describe(),stat.desc()
频数统计函数:
独立性检验函数:
独立性检验是根据频数信息判断两类因子彼此相关或相互独立的假设检验,所谓独立性就是指变量之间是独立的,没有关系。
p-value:是Probability的值。它是一个通过计算得到的概率值,也就是在原假设为真时,得到最大的或者超出所得到的检验统计量值的概率。一般将p值定位到0.05,当p<0.05拒绝原假设,p>0.05不决绝原假设。
相关性检验函数:
R自定义函数:
函数名称最好与功能相关,可以是字母和数字的组合,但必须是字母开头。函数的声明利用function来声明。
函数的输入参数:
例如sum,mean,sd,range,median,sort,order接收向量类型。
选择接受哪些参数:
函数的选项参数:
输入控制部分:
函数要接收的数据类型的限制,例如file表示接收一个文件,data表示接收一个数据框,x表示单独的一个对象,一般都是向量,也可以是矩阵或者列表。x和y表示函数需要两个输入变量,...表示输入变量没有数量限制,formula表示接收一个公式,na.rm表示删除缺失值。
输出控制部分:
调节部分:
可以根据名字判断选项的作用,例如color选项用来表示控制颜色,select表示与选择有关,font表示与字体有关,font.axis就是坐标轴的字体,lty是line type,lwd是line width,method表示软件算法。
本文深入介绍了R语言的基本操作,包括向量、矩阵、列表、数据框和因子等数据结构,以及数据的读取、写入和转换。此外,还探讨了R包的管理、函数使用、缺失数据处理和统计分析。通过实例演示了如何利用R进行数据处理和分析,是R语言初学者的实用教程。



































































15万+

被折叠的 条评论
为什么被折叠?



