目录
2.1 数据管理
2.1.1 变量重命名
2.1.2 缺失、异常与重复值的清洗
2.1.3 数据转换、排序、抽样与概率统计
2.1.4 案例分析(工程管理)
2.1.5 字符串处理
2.2 [控制语句与函数编写]
2.2.1 控制语句:分值与循环
2.2.2 函数编写
2.3 程序调试
2.3.1 程序调试的原则
2.3.2 R的调试工具
2.3.3 语法与运行时的常见错误
2.4 图形制作
2.4.1 绘图函数
2.4.2 绘图参数
2.4.3 图形要素
2.4.4 图形组合与保存
2.4.5 绘图案例
2.5 常用程序包
2.5.1 标准包
2.5.2 安装包
2.1 数据管理
2.1.1 变量重命名
fix() 交互式修改,数据框交互式、列表的交互式修改是记事本
rename() 修改数据框或列表的变量名,不能修改矩阵的变量名(位于 reshape 包中)
names() 修改 数据框或列表的变量名 ,不能修改矩阵的变量名( *** )
colnames() 修改 数据框、列表、矩阵的变量名 ( ** )
2.1.2 缺失、异常与重复值的清洗
1. 缺失值的发现与清洗
is.na() 缺失值检测(对象的每个数据), TRUE 表示该位置为缺失值
anyNA() 数据对象只要有一个缺失值就会返回 TRUE
complete.cases() 哪一行存在缺失值?返回 TRUE 表示数据完整
na.omit() 数据框:删除数据框中 “ 存在缺失值的行 ”
矩阵:删除缺失值的元素(常用)
缺失值除了删除也可以通过替换 / 插补
2. 异常值的发现与清洗(离群点,奇异点)
boxplot() 异常值的检测
boxplot() 运行结果中的 out 字段取出,赋值为 NA ,再用 na.omit() 删除
3. 重复值的发现与清洗
duplicated(x) x 为矩阵 / 数据框,对行查重; x 为向量,对元素查重
unique(x) x 为矩阵,对行作唯一运算,相当于 x[!duplicated(x),]
2.1.3 数据转换、排序、抽样与概率统计
1. 数据转换
函数转换: log() exp() 查分转换 diff() 累加转换 cumsum()
规范化转化: z-score 标准化 scale() eg :标准正态分布
最小最大规范化:极差标准化
小数定标规范化:映射到 [-1,1]
2. 数据排序
sort() 从小到大,升序排列
sort(score$math) sort(score$math, decreasing = TRUE) # 倒序输出
sort(score$Chinese, na.last = TRUE) # 缺失值排在最后
rank() 求出每个元素的秩,重复数据的秩取平均值
order() 对向量和数据框都可排序,返回值表示 sort(x) 中对应排名的元素在向量中的位置
3. 数据抽样
sample() 随机抽样,分组;可先应用 set.seed() 设置随机种子
sample(1:100, 20, rep=T) 放回抽样
sample(1:100, 20, prob=1:100) 给不同数字不同的抽到概率
srswr() 重复随机抽样 srswor() 无重复的简单随机抽样 其他抽样函数
4. 概率统计
2.1.4 案例分析(工程管理)
P10 17:02
2.1.5 字符串处理
1. 正则表达式(通配符号)
运算顺序:圆括号 > 表示重复次数的操作(最后四个) > 链接运算(如 abc ) > 可选项运算 |
常用元字符
2. 字符串处理函数
2.2 [控制语句与函数编写]
块状结构程序语言 块 {block}
2.2.1 控制语句:分值与循环
1. 分支 / 条件语句
if - else - if 结构: if(cond1){expression1} else if (cond2){expression} else
{expression}
if 结构: if (cond1){expression1}
向量化条件 函数 : ifelse( 条件,语句 1 ,语句 2)
switch(expression,list) expression为数字编号或变量名,list为列表
tips:else if/else不能顶格写
2. 循环语句
for(n in x) { 语句体 / 循环体 } : x 为循环空间,可以是向量或者乡里那个排列式
while(cond){expression} while/repeat 循环中需要 i< - i+1 来实现循环
repeat{if(cond){break} expression} repeat-break 循环,符合 if 条件跳出循环
非向量集合的循环空间 lapply() get()
2.2.2 函数编写
1. 函数定义
格式: 函数名 < - function( 参数列表 ){ 表达式 / 函数体 }
函数中再次定义函数:全局变量 / 局部变量
输出: stop 打印输出 /plot,hist 图形输出 /return 返回结果,默认最后的语句作为语句的值
stop("something error orz") 输出错误信息
2. 函数调用
格式: 目标变量 < - 函数名 ( 参数列表 )
3. 程序示例
2.3 程序调试
2.3.1 程序调试的原则
1. 调试的本质:逐步确认
2. 小处着手,从小的、简单点的调试
3. 模块化,自上而下的调试风格,无罪推定思维
4. 反漏洞策略
2.3.2 R的调试工具
1. debug() 与 browser()
针对单个函数来进行调试
在函数中某一行加入一条 browser() 语句会执行到这一条的时候才打开浏览器
2. 使用浏览器命令
n 表示 next ,或者点击 Enter ,执行下一行
c 表示 continue ,下次暂停前可能执行若干条语句
Q 表示退出浏览器
3. 设置断点(浏览器只有在特定条件下才会被打开)
setBreadpoint(filename,linenumber) 对给定的文件,在设定的行 / 位置处展开调试
4. trace() 追踪
trace(f,browser) 与 f() 函数文件中的第一行加入一条 browser() 语句
untrace(f)
5. R 程序崩溃
traceback() 看问题发生在哪个函数中,程序怎样通过函数调用到那个函数
options(error=dump.frames) 更详细的信息
6. 程序调试的 2 个案例
Case1 : Debug 和 Browser
如果有 browser() ,则函数运行停在 browser() ;如果是从头开始,源程序里面需要增加一行
debug()
如果在断点之前就有错误返回,则调试会直接结束
Case2 :寻找 1 的游程
注:在 0 和 1 组成的序列中,一个由连续的 0 或 1 构成的串、称为一个游程 run 。
调试代码
注意:调试过程中如果想要看变量 n 或者 Q 的值,需要 print(n) 不可以直接输入 n
debug at #3: runs < - NULL 表示程序运行到这这一步但是还没有执行
bug :运算优先级别,应当为 i:(i+k - 1)
可以在循环前设置断点,避免前面的操作
最后一次循环一般是容易出问题的地方, 可以在最后一次循环前添加断点
此时 browser 中输入 i 返回 7 ,但是应该到 n-k+1=8 时, 8-9 仍可能是长度为 2 的
因此正确的代码应该把
2.3.3 语法与运行时的常见错误
1. 二分搜索(注释掉一半的代码)
2. There are 50 or more warnings 出现该信息可以通过 warnings() 查看前 50 个,问题可能是
某个算法不收敛,或者函数接受了一个不正确的矩阵参数。
3. set.seed() 控制重复的模拟随机序列,验证随机分布
2.4 图形制作
2.4.1 绘图函数
高级绘图函数:可以自建画布;低级绘图函数:补鞥呢自建画布,只能添加点线、图例等
2.4.2 绘图参数
高级绘图参数 :只能改变当前窗口图形输出
par绘图参数 :在已有图形上添加说明信息par函数参考说明
2.4.3 图形要素
色点线 cpl 、文例轴 tla
1. 色
绘图参数 col :可以改变图像、坐标轴、文本、图例、点、线的颜色
palette() :设置调色板的颜色 [ 调色板中相应未知的元素 ]
整数可以表示颜色,默认的对应关系 [1 黑 2 红 3 绿 4 蓝 ] [5 蓝绿 6 洋红 ] [7 黄 8 灰 ]
rgb() rainbow() heat.colors() terrain.colors() 渐变色生成函数 【代码参见
mj4stu2(2).R 662 行】
2. 点
points() 在画布中添加点,参数有:
pch 表示点的样式,整数取值 0-25, 或自定义字符
bg ,点内部填充的背景色,仅限 21-25 样式的点
lwd ,点边框的宽度, 1 位正常的基准库看度
3. 线
lines() 添加线条,参数有:
lty :线样, 0 不划线, 1 实线, 2 虚线, 3 点线
lwd :线宽, 1 是正常基准宽度
curve() :对 x 的表达式,也可以绘制曲线
abline() :添加参考直线
segments() 线段 arrows() 箭头
grid() 网格线 rug() 坐标轴须的分布
4. 文
title() 添加标题、 text() 在任意位置添加文本、 mtext() 在图形周边添加文本
5. 例
legend() 添加图例,参数有:
表示位置可以有具体位置 c(x,y) 或者字符串表达
c("bottomright","bottom","left","top",...,"center")
6. 轴
axis() :不用 R 默认的,创建自定义的坐标轴,参数有:
绘图参数 side :坐标轴所在的边, 1234 对应下左上右
at 刻度位置 VS labels 刻度标记向量
tick :是否画出 “ 坐标轴刻度 ” ,默认为 T
tck :刻度线长度,赋值表示在图形外侧,默认为 -0.01
2.4.4 图形组合与保存
1. 图形组合
par(mfrow=c(2,4)) 按行从左到右、绘制( 2x4=8 )幅图
layout() (略)
2. 图形保存
2.4.5 绘图案例
1. mtcars 为数据集
颜色设置
线形设置
2. plot “泛型”类函数的演示
3. 上证指数及上市个股的对数收益率分布特征
读取数据信息
计算对数收益序列
从各个个股数据框提取各自的收盘价格
绘制上证指数收益时间序列图、散点图、自相关图与偏自相关图
绘制 Q-Q图、 经验累积分布ecdf图、 密度图、直方图
2.5 常用程序包
R 程序包:时间 / 名称两种索引方式
2.5.1 标准包
含有 “ 数据集、标准统计、图形工具 ” ,可以用 search() 函数查看
2.5.2 安装包
1. 安装 install.packages() ; R 菜单, packages>install
2. 加载 library() 或 require() ; R 菜单, packages>(√) 程序包名
3. 更新 upadte.packages() ; R 菜单, packages>update
4. 在线帮助
查看包: Rstudio 中直接点击包名; R 中 help(package=" 包名 ")
查看函数: ?function 或者 help(" 函数名 ",try.all.packages=T)
查看特殊符号: help(%%)
关键词搜索 ?? 关键词 或 help.search(" 关键词 ")
2.5.3 常用程序包
根据数据分析方法不同、分类: 统计、计量、实证、金融、时序 具体看课件