R语言基础

文章目录

      • 一、语言风格
      • 二、基础命令
      • 三、运算符、函数和编程
          • 运算符
          • 函数
          • 编程
      • 四、数据基础
          • 数据结构
          • 数据输入
          • 数据管理
      • 五、一般绘图

一、语言风格

  • 基于S语言开发
  • 大小写敏感,句末不用加分号
  • \:路径中使用 & /:转义字符
  • #:注释符
  • R中没有标量;下标不从0而从1开始;变量无法被声明,在首次赋值时产生

二、基础命令

命令 功能
getwd() 查看当前工作目录
setwd(" ") 设定当前工作目录(文件路径要加 " ")
dir.create(" ") 创建新目录
source(" ") 在当前会话中执行某个脚本
sink() 重定向文本输出(append=TRUE,split=TRUE)
dev.off 将输出返回到终端
q() 退出程序
ls() 列出当前工作空间中的对象
rm() / rm(list=ls()) 删除对象
?xxx / ??xxx 帮助
demo() 图形演示
install.packages(“xxx”) - library(xxx) 包的安装和调用
search() - libPaths()… 查看已载入的包,显示库的位置

三、运算符、函数和编程

运算符
符号 含义 符号 含义
<- 赋值 ^ / ** 求幂
x%%y 求余 x%/%y 整数除法
%in% 属于
函数

数学函数
统计函数
概率函数
字符处理函数
其它实用函数
将函数应用于矩阵、数组和数据框 apply(mydata, MARGIN=1<行>/2<列>,FUN)
将函数应用于列表 lapply / sapply

前缀 含义 函数 含义
d~ 求某个点处的概率值(pdf/pmf) ~binom() 二项分布
p~ 求累积概率值(cdf) ~multinom() 多项分布
q~ 求p分位点 ~pois 泊松分布
r~ 产生符合分布的随机观测 ~norm 正态分布
函数 功能 函数 功能
mean() 均值 sd() 标准差
cor() 相关度 isTRUE() 测试是否为真
log() 自然对数 log10() 以10为底的对数
set.seed(a) 设定随机种子 runif(n) 生成0-1上n个伪随机数
mvrnorm(n,mean,sigma) 生成多元正态数据 rep() 复制
sum(x) 求矩阵元素之和 rowSums/colSums 求矩阵行/列元素之和
编程
循环语句
① for(var in seq)  {
     statement1; statement2}while(condition) {
     statement1; statement2}

条件语句
① if(condition) statement1 <else statement2>ifelse(condition,statement1,statement2)switch(var, statements)

用户自编函数
myfunction <- functions(arg1,arg2){
     
              statements
              return(object
              }

四、数据基础

数据结构
1. 向量(包括标量)
	赋值:a<-c("k","j","h")
	取值:a[3]   a[c(1,3)]   a[1:3]

2. 矩阵(二维)
	赋值:b<-matrix(vector,nrow,ncol,byrow=TRUE/FALSE,dimnames=<行标签和列标签>)
	取值:b[2,]   b[1,c(1,3)]   b[1:3,2:3]

3. 数组(>二维)
	赋值:c<-array(vector,dimensions<各维下标最大值>,dimnames= )
	取值:c[1,2,3]  

4. 数据框(可以存储不同类型的变量)
	赋值:d<-data.frame(col1,col2,...)
	      d<-as.data.frame(old_dataset[ , ])
	取值:d[1:2]  (只有一个维度可以取值)

5. 列表(可以由向量、矩阵、数组、数据框、列表等共同构成)
	赋值:e<-list(name1=obj1,name2=obj2,...)
	取值:e[[2]]  e[["xxx"]]

变量类型:日期型、连续型、名义型、有序型  [名义型or有序型 → 类别型 → 因子factor]
可处理数据类型:数值型numeric、字符型character、逻辑型TRUE/FALSE、复数型、原生型(字节)
因子factor(var,order=TRUE/FALSE,levels=c(),labels=c())/实例标识符rownames,用于区分数据集中不同的个体(相当于主键,用row.names="xxx"指定)

str(): 显示某个对象的数据结构
attach(): 将数据框添加到R的搜索路径中(避免出现同名对象的情况)
detach(): 将数据框从搜索路径中移除
with( ,{
      }): 将数据框添加到R的搜索路径中(prefer)
// 用 with语句可以避免同名对象的问题;但赋值一般仅在函数的括号内生效
// 如需创建 with()结构以外存在的对象,使用特殊赋值符<<-代替
数据输入
* 从键盘输入(用edit一定要赋值到一个目标,不然编辑会丧失)
	mydata <- edit(mydata) / fix(mydata)
	mydata <- data.frame(age=numeric(0)),gender=character(0))
	//创建一个指定模式但不含实际数据的变量
	or:直接在程序中嵌入数据集
	
* 导入带分隔符的文本文件
	mydata <- read.table(file,options)
	
* 导入excel数据
	mydata <- read.table(".csv",<options>)
	library(xlsx)  mydata <- read.xlsx("",n<工作表序号>)
	or: 菜单栏操作
	
* 导入SAS数据
	library(Hmisc)  mydata <- sas.get()
	
* 导入xml/SAS/SPSS/STATA数据 

* 从网上抓取数据(rvest)
数据管理
* 创建新变量
	① mydata$sumx <- mydata$x1+mydata$x2
	② attach(mydata)
	  mydata$sumx <- x1+x2
	③ mydata <- transform(mydata,sumx=x1+x2)

* 数据集的标注
  ① 变量标签(只能将变量标签作为变量名)
	names(mydata)[2] <- "xxx"
  ② 值标签(因子)
	factor(c(),levels=c(),labels=c())
		
* 变量的重编码
	variable[condition] <- expression
	- leadership <- within(leadership,{
     agecat<-NA,agecat[age>75]<-"elder"})
	
* 变量的重命名
	① fix(mydata)  交互式编辑器
	② names(mydata)[2] <- "xxx"library(plyr)
	  mydata <- rename(mydata,c(var1="varA",var2="varB"))
	
* 缺失值(NA)
	is.na()  检验缺失值是否存在(缺失值不可比较 var==NA ×)
	is.infinite()  检验Inf和-Inf
	is.nan()  检验类似sin(Inf)等
	na.rm=TRUE  在数值函数中排除缺失值
	na.omit()   移除所有含有缺失值的观测(行删除)
	
* 日期值
	"%m/%d/%y"  一种日期格式
	Sys.Date()  返回当天日期    date()  返回当天的日期和时间
	format(var,format="xxx")  输出指定格式的日期值
	difftime(x,y,units="...")  计算时间间隔(也可以两个日期直接相减)
	as.Date(x,"xxx")      将字符型转化为日期型
	as.character(dates)   将日期型转化为字符型

* 类型判断和转换
	is.xxx()  类型判断(返回TRUE / FALSE)
	as.xxx()  类型转换(将参数转换成对应类型)
	
* 数据排序
	newdata <- mydata[order(var1,-var2), ]  (默认升序,加负号降序)
	
* 数据集的合并
	total <- merge(dataframeA,dataframeB,by="ID") 横向合并(通过公共索引)
	total <- cbind(A,B)  横向合并(自然连接)
	total <- rbind(A,B)  纵向合并(添加观测,两个数据框必须有相同变量)
	
* 数据集取子集
	选入/保留变量   newdata <- mydata[ ,c(6:10)]  
	剔除/丢弃变量 ① newdata <- mydata[c(-8,-9)]
	             ② mydata$8 <- mydata$9 <- NULL
	             ③ delvars <- names(mydata) %in% c("8","9")
	               newdata <- mydata[!delvars]
	选入观测(选子集)subset(mydata, conditions<...&...|...>, select=20:50)
	随机抽样  mysample <- mydata[sample(1:nrow(mydata),n,replace=TRUE/FALSE), ]

* 整合与重构
	转置  t()  
	整合  aggregate(x,by,FUN)  (by中的变量一定在一个list中)
	融合  library(reshape2)  melt(mydata,id=c("xx","xx"))
	重铸  library(reshape2)  dcast(mydata,formula,fun.aggregate)

* 其他 
	- 生成var1和var2的列联表(提取计数)   table(mydata$var1,mydata$var2) 
	- SQL语句操作数据框  library(sqldf)  newdata <- sqldf("select * from mydata where ...") 
	

五、一般绘图

* dev语句
	dev.new() 新建窗口
	dev.next() / dev.prev() / dev.set() 同时打开多个图形窗口
	jpeg(" .jpg")/pdf(" .pdf")...dev.off() 保存图形/pdf输出
//对应菜单界面
	plots → export → save as
	history → recording → next/pre
	
* 绘图操作
	plot(x,y,type=<无:只有点 / "b":点+线 / "c":只有线>,<其他参数>)
	hist()   boxplot()  barplot()
	
* 参数修改
	par()  生成一个含有当前图形参数设置的列表
	opar <- par(no.readonly=TRUE)  保存当前参数设置
	par(pch=<符号形状>, cex=<符号大小>, lty=<线条类型>, lwd=<线条宽度>, col=<符号边界颜色>, bg=<填充色>  ...)
	//通过par设置的参数对在其中的图都有效,而在plot中指定的参数仅对那个特定图形有效
	
* 颜色

* 文本

* 尺寸和边界

* 坐标轴、文本标签
	main 标题    sub 副标题     title 可用于总设置
	xlab/ylab  x/y轴标签       xlim/ylim  x/y坐标范围
	//先禁用默认参数
	par(ann=FLASE<禁用标题、标签>,axes=FALSE<禁用坐标轴>,xaxt="n",yaxt="n"<分别禁用x轴y轴>)

* 参考线
	abline(h=yvalues,v=xvalues)
	
* 图例
	legend(location,title,legend...)
	
* 文本标注/数学标注
	text(), mtext(), plotmath()

* 图形组合和布局的精确控制
	par(mfrow/mfcol=c(1,2))   按行/列填充的12列的图形矩阵
	layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),width=c(3,1),heights=c(1,2)...
	fig=...


你可能感兴趣的:(R)