一、语言风格
基于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)
数据输入
* 从键盘输入(用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= "<days><weeks><months><years>..." ) 计算时间间隔(也可以两个日期直接相减)
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= < 填充色> . . . )
* 颜色
* 文本
* 尺寸和边界
* 坐标轴、文本标签
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 ) ) 按行/ 列填充的1 行2 列的图形矩阵
layout ( matrix ( c ( 1 , 1 , 2 , 3 ) , 2 , 2 , byrow= TRUE) , width= c ( 3 , 1 ) , heights= c ( 1 , 2 ) . . .
fig= . . .