导入数据之前
明确需求
理解数据
数据质量
导入数据
支持多种数据源
文本文件
read.table、read.csv、read.delim
scan
Excel文件
csv、prn格式+read.csv
剪贴板+read.delim
xlsx扩展包
rodbc包
数据清洗
缺失值处理
NA、NaN、Inf、-Inf
识别缺失数据
先把不合理值重编码为缺失值
is.na、complete.case
mice::pattern
VIM::aggr、VIM::matrixplot
处理缺失值
缺失值是否有业务含义
删除na.omit、行删除、配对删除
替换
异常值处理
数据转换
数据规范化:将数据按比例缩放,落入一个小的特定区间
极差化
标准化scale
小数定标规范化
改善分布的转换
取对数、平方、倒数、指数
数值变量离散化
ifelse()
ifelse的延伸
cut和Hmisc::cut2
数据筛选
随机采样
sample()
set.seed
按条件过滤
subset、which
SQL爱好者的福音
需要安装SQL包
install.packages(‘sqldf’)
library(sqldf)
变量筛选
选取有用变量
消除变量间的相关性
注:数据筛选和变量筛选也称为数据规约
导出数据
支持多种数据源
文本文件
write.table、write.csv
# 查看当前工作目录
> getwd()
[1] "C:/Users/Administrator/Documents"
# 修改当前工作目录
> setwd('G:/work/R')
> getwd()
[1] "G:/work/R"
# 读取数据示例
> x = read.table('G:/work/R/lastsave1.txt',header = F,sep = ',')
> x = read.csv('G:/work/R/lastsave1.txt',header = F)
> x = read.delim('G:/work/R/lastsave1.txt',header = F,sep = ',')
> x = read.delim('clipboard',header = F)
用scan读取的数据是一个列表,用as.data.frame转换成数据框
> x = scan('G:/work/R/lastsave1.txt',what = list(date = "",pv = 0,uv = 0),sep = ",")
> x = as.data.frame(x)
文件写入示例:
> write.table(x,'G:/work/R/lastsave2.txt',sep = ',',quote = F,col.names = T)
缺失值检查示例:
> (vx = c(1,3,NA,6,8))
[1] 1 3 NA 6 8
> (y1 = is.na(vx))
[1] FALSE FALSE TRUE FALSE FALSE
> (y2 = complete.cases(vx))
[1] TRUE TRUE FALSE TRUE TRUE
is.na和complete.cases的差异:
> (mx = matrix(1