一、、数据结构
向量、矩阵、数据框、数组
矩阵:df<-matrix(vector,nrow=,ncol=,byrow=T/F)
数组:df<-array(vector,dimension(几行?几列?几个矩阵?),dimname()) 数据框:df<-data.frame(向量1,向量2,向量3,……)
因子函数:df<-factor(向量,order=true),按首字母排序向量,如poor、improved、excelent的排序为3、2、1,也可以按指定排序覆盖,如:df<-factor(向量,order=true,levels=c(\”)),顺序变为1、2、3
二、导入数据
1、 内建编辑器输入:df<-edit(df)
2、 csv:df<-read.table(\逗号间隔符),excel可转为csv格式 3、 Excel:library(openxlsx) df<-read.xlsx(\路径/file.xlsx\?) 4、spss:library(haven) df<-read.sav((\路径/file.sav\5、txt:df<-read.table(\逗号间隔符)
三、数据处理
attach:选定一个数据框 detach:撤销选定
1、提取目标列dataframe[,c(“列名”, “列名”……)或dataframe[,1:n]
2、添加新列within:df<-within(dataframe,a=变量名1+变量名2,b=变量名2+变量名3)
mutate:library(dplyr)
df<-mutate(ataframe,a=变量名1+变量名2,b=变量名2+变量名3,c=a+b) 3、排序:dataframe[order(dataframe$变量1,dataframe$变量2),]前后两个变量有优先级排序,“,”表示返回所有列
或 library(dplyr) arrange(dataframe, 变量1,变量2) 前后两个变量有优先级排序 4、筛选:subset(dataframe,条件1 & 条件2……,1:n(返回的列数))
&(和),|(或)
或library(dplyr) filter(dataframe,条件1& 条件2& ……) &(和),|(或)
5、合并:paste(元素合并)、rbind(行合并)或cbind(列合并)
Merge(df1,df2,by=””)根据共同变量合并
6、分组处理数据 :aggregate(计算变量~分组变量,函数),若分组变量为多个,可+起来 7、缺失值处理:is.na(dataframe)判断缺失值
Dataframe$变量[ataframe$变量+判断条件]<-NA 将符合条件的元素定义为NA
Dataframe[is.na(dataframe)]<-mean(Dataframe$变量,NA.remove=true) 将
缺失值换位平均值,平均值是移出NA值后得出的
8、数据类型转换:is.numeric()判断——as.numeric()转换 Is.charactor()——as.charactor()
9、随机抽样:df<-sample(1:nrow(data),抽取数量,replace=true/false) 抽出来的是样本序号,表示第……个,要将其转化为源数据构成样本,赋值为data[df]即可,data是数据集,df是抽出来的行数,此步为提取子集
分层抽样:library((sampling)
df<-strata(data,stratanames = 列名,size =c(每一层抽样数),method = \无放回) datasample<-data[df$ID_unit,] 转化为源数据
可将数据集转化为向量的形式,数据集可以转为矩阵
10、数据标准化
df<-scale(dataframe)*SD+M(SD为想要的标准差,M为想要的均均值) 11、高批量处理函数
apply(矩阵或数组,维度,function),维度=1表示行,=2表示列,=3表示表 sapply(列表,fun),结果以向量形式输出
四、ggplot作图 library(ggplot)
逻辑:ggplot(dataframe,aes(变量))+geom_图形 1、图形类型
散点图:ggplot(dataframe,aes(变量1,变量2))+geom_point() 线图:ggplot(dataframe,aes(变量1,变量2))+geom_line() 柱状图:ggplot(dataframe,aes(factor(变量)))+geom_bar()
ggplot(dataframe,aes(factor(变量),fill(变量)))+geom_bar(position=”fill”/”dodge”)
直方图:ggplot(dataframe,aes(变量))+geom_histogram() 密度图:ggplot(dataframe,aes(变量))+geom_density()
ggplot(dataframe,aes(变量,color()))+geom_density()
ggplot(dataframe,aes(变量,fill(变量)))+geom_density(alpha=0.5)
箱线图:ggplot(dataframe,aes(变量))+geom_boxpoint() 2、复合图形
分组作图:分组变量有时候在源数据中是连续性变量,最好是转化为分类变量,factor()转化 fill和color的区别:fill是对图形内部进行填充,color是对点和图形的边缘进行描绘
分面作图:例-ggplot(dataframe,aes(变量1,变量2))+geom_point()+facet.grid(变量, ,scale=”free)或+ facet.grid(,变量,scale=”free) 3、添加项
添加文本:+annotate(“text”,x= ,y= ,label=” “)
改变图形大小、颜色:geom_point(size=, color= ) 重命名:+labs(title=” “,x=” “,y=” “)
添加参考线:geom_vline(xintercept= ) 垂直线 geom_hline(yintercepy= ) 水平线 x/y互换:coord_filp()
限制坐标轴范围:xlim(?,?) ylim(?,?)
修改坐标轴上的值:scale_x_continuous(break=c( ),labs=( )) scale_y_continuous(break=c( ),labs=( ))
五、统计分析 1、描述性统计
统计值library(pastecs) df<-stat.desc(data) 计数
table(data$) 或table(data$ ,data$ )双变量
2、正态分布
正态分布常用的4个函数
生成正态分布:rnorm(n,mean=,sd=)
概率(曲线下面积)对应x值:qnorm(概率,mean=,sd=) x值对应概率:dnorm(x值,mean=,sd=) 区间概率:pnorm(x值,mean=,sd=)
检验正态分布
qq图:qqnorm(data)
qqline(data) 若散点落在线上,可直观判断是否符合正态分布 shapiro 检验:shapiro.test(data) 样本在5000以内 w值接近1 ,p>0.05 说明符合正态分布
KS检验:KS.test(data,rnorm(样本量,mean=mean(data),sd=sd(data))
构建一个和源样本均值和标准差相同的正态分布,比较二者数据之间的差异 D值接近0且p>0.05时,说明符合正态分布。可用for循环做多组 for(i in 1:times){
s_data<-KS.test(data,rnorm(样本量,mean=mean(data),sd=sd(data)) c_data<-append(c_data,s_data[[“p.value”]]) 将所有p值放到c_data中,判断在times里面p值符合条件的次数有几次(length函数)
一般正态分布转化为标准正态分布
data1<-(data-mean(data)/sd(data)),出来是向量的格式 3、参数估计、假设检验:判断抽样是否可以估计总体
中心极限定理,在抽样样本>30时,该定理可发挥作用,抽样均值近似服从正态分布 z=X-μ/σ/sqrt(n),在显著性水平(一般为0.05)的条件下,z值在置信区间内,p>0.05,则可以用抽样参数估计总体,反之则不行
4、t检验
小样本,n<30时,若总体服从正态分布
单样本t检验:检验一个变量的总体均值和某个检测值是否存在显著性差异 t.test(data,alternative=”two.side”/”less”上限/”qreater”下限,mu=(总体均值)) 两独立样本t检验:两个总体均值是否存在显著差异
t.test(目标变量~分组变量,data,var.equal=true(方差齐)) 配对样本t检验:一个变量的前后的均值是否存再显著性差异 t.test(data$, data$, paired=true)
最后都是看t值下的p值水平,和显著性水平0.05比较
5、方差分析
能够判断事物影响因素的方法
判断样本均值的变异是由因素的不同水平造成的还是由随机因素造成的 检验多组数据的均值用t检验是不合适的,犯错的概率是1-0.95^n
单因素方差分析
F值=组间均方MSA/组内均方MSE
F接近1时,各组间和组内无明显差异,因素影响程度很小 F远大于1时,组间差异明显大于组内差异,因素影响程度很大
方差齐性检验:bartlett.test(因变量~影响因素,data) 方差分析:df<-aov(因变量~影响因素,data) 两两比较:TuKeyHSD(df)
双因素方差分析
方差齐性检验:bartlett.test(因变量~interac(影响因素1+影响因素2),data)
方差分析:df<-aov(因变量~影响因素1+影响因素2+影响因素1:影响因素2,data)
R语言学习笔记(完整)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)