第五节 数据整理
一、准备数据
1.数据挖掘工作:数据准备(80%)+算法分析(5%)+总结
2.数据形态:存储时面向数据库,转换成分析形态
二、合并
1. 合并数据集
数据存储在不同的文件中,需要将不同的对象合并为一个整体分析对象。
2)paste() 将多个字符型向量连接成一个向量。
x<-c(1,2,3,4,5)
y<-c("a","b","c","d","e")
paste(x,y)
paste(x,y,sep="-")
paste(x,y,sep="-",collapse=",")
2.合并矩阵或数据框
rbind()和cbind() 列数或行数相同
例:读入两个班的学生信息,并合并为一个数据框
stu1<-read.csv("stu1.csv",header=T)
stu2<-read.csv("stu2.csv",header=T)
stu<-rbind(stu1,stu2)
3.合并数据
通过共同字段合并数据
merge()函数
merge(x,y,by,by.x,by.y,all)
x,y:合并的数据框
by:对应于列名的字符型向量
例:将1班学生成绩与学生信息合并
data_score<-read.csv("stu1_score.csv",header=T)
stu<-merge(stu1,data_score)
三、数据转换
1.变量类型转换
2.as.类型()函数
3.transform()函数 数据框对象
transform(x,转换的变量)
x:要转换的数据框
后面依次添加要转换的变量及转换格式
例,使用transform()计算每名学生平均分
stu<-transform(stu,学号=as.character(学号),平均分=(stu[,7]+stu[,8]+stu[,9])/3)
分类运算
4.apply() 数组、矩阵
apply(x,margin,fun) margin=1(行),2(列)
x<-1:20 ; dim(x)<-c(5,4)
apply(x,margin=1,fun=max)
4.lapply() 列表、数据框,返回一个列表
lapply(x,fun)
d<-data.frame(x=1:5,y=6:10)
lapply(d,function(x) 2^x) ;lapply(d,fun=max)
5.sapply()函数 返回向量、矩阵或数组
sapply(d,fun)
sapply(d,funciton(x) 2^x)
四、plyr软件包
1.集合多种pply函数的功能
输入 |
输出矩阵 |
输出数据框 |
输出列表 |
不输出 |
数组 |
aaply |
adply |
alply |
a_ply |
数据框 |
daply |
ddply |
dlply |
d_ply |
列表 |
laply |
ldply |
llply |
l_ply |
2.参数
.data |
输入的数据对象 |
.fun |
要运行的函数 |
五、数据分段
1.cut()函数 输入为数值向量,输出为因子
cut(x,breaks,labels)
X:数值向量 breaks:指定分割点数量的整数,或指定位置向量
labels:输出因子的水平的标签
例:将30名学生成绩分段,并统计每个分段的人数
data<-round(runif(30,0,100))
data_cut<-cut(data,breaks=c(0,60,70,80,90,100))
table(data_cut)
六、合并对象
1.将几个相似的对象(向量或数据框)合并成一个数据框
2.Make.groups() 先安装lattice包
例:cls_a<-round(runif(10,0,100))
cls_b<-round(runif(10,0,100))
cls_c<-round(runif(10,0,100))
make.groups(cls_a,cls_b,cls_c)
七、子集
需要分析数据为全部数据的部分
使用下标访问部分数据
如:取出所有女生的信息
subset()函数
subset(x,subset,select)
x:全部数据
subset:需要取出的子集
select:需要取出的列
八、随机抽样
1.sample()函数
- sample(x,size,replace,prob)
x:目标数据 size:抽样数量的参数
replace:是否放回抽样,有放回为T,无放回F prob:抽样的概率向量
- sample直接作用数据框,得到对列的抽样结果。
2.实现按行抽样
sub1<-sample(nrow(data_stu),5,replace = F)
getdata(data_stu,sub1)
九、Insurance数据集介绍</