#cbind()或rbind()函数将矩阵或向量按行或列合并,形成新的矩阵
cbind(1:2,3:4,7:8)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
rbind(1:2,4:5,7:8)
[,1] [,2]
[1,] 1 2
[2,] 4 5
[3,] 7 8
#as.numeric()函数把因子型向量转换成数值型向量时,将输出水平序号
> hakata <- c(0,2,3,1,3,2,1,2)
> fhakata <- factor(hakata,levels=0:3)
> fhakata
[1] 0 2 3 1 3 2 1 2
Levels: 0 1 2 3
> as.numeric(fhakata)
[1] 1 3 4 2 4 3 2 3
> as.numeric(as.charcter(fhakata))
[1] 0 2 3 1 3 2 1 2
#在对象名后面添加“$成员引用名”并执行,就可以直接引用指定列表成员
#对于向量,计算平均值、标准差、四分位差和相关系数
> var(ws.customer$Fresh)
> sd(ws.customer$Fresh)
> IOR(ws.customer$Fresh)
> cor(ws.customer$Fresh)
#基于dplyr程序包的数据框操作
#通过filter()函数执行过滤,并返回由满足条件的行执行的数据框。第1个参数为数据框,第2个参数为针对各个变量的条件表达式。条件表达式如果用逗号分隔符描述,表示只选择满足全部条件的行(AND),如果用“|”分隔符,描述,则表示选择满足任意条件的行(OR)。如果只提取数据框中指定的变量的列,可以使用select()函数。
> filter(ws.customer,Frozen>8000,Grocery>9000)
> select(ws.customer,Channnel:Milk)
#在dplyr程序包中,可以使用summerize()函数执行和前边的summary()函数相同的操作。
> summarize(ws.customer,n=n(),Fresh.m(Fresh),
+ Milk.m=mean(Milk))
#通过组合使用summarize()函数和用因子型的列对数据框进行分组的group_by函数,可以按组汇总
> ws.customer.g <- group_by(ws.customer,Channel,Region)
> summerize(ws.customer.g,n=n(),Fresh.m=mean(Fresh),
+ Milk.m=mean(Milk))
#说数据框的排序可以使用arrange()函数,默认为升序,可以使用desc()进行升序排序
#基于%>%的数据框操作的连接。%>%就是将最开始的操作的结果暂时保存为另一名称的对象,然后对该对象执行下一步的操作。
#数据的可视化,一般用ggplot2程序包。
\\安装如下:
> install.packages("ggplot2")
> library(ggplot2)
#柱状图。
\\首先可用table()函数进行统计
> channel.tab <- table(es.customer$Channel)
> channel.tab
#若要基于该计数绘制柱状图,可以用barplot()函数
> barplot (channel.tab,ylim=c(0,300),ylab="计数")
#ggplot2程序包用qplot()函数来绘制基本的统计图。
\\当qplot()函数的参数只指定了一个因子型变量时,就可以绘制出柱状图
> qplot(Channel, data=ws.customer, fill=I("grey",ylab="计数"))
#可以将柱状图的柱子按照其他分类变量的类别的比例进行分割,然后分配对应的颜色,这就是纵向堆积柱状图。
\\纵向堆积柱状图
> qplot(Channel,data=ws.customer,fill=Region,ylab="计数")
\\带状图
> qplot(Channel,data=ws.customer,fill=Region,ylab="比例"
+ position="fill")
#直方图
\\使用hist()函数,breaks参数指定了分割的区间个数
> hist(ws.customer$Milk,breaks=20,xlim=c(0,80000),ylim=c(0,300),
+ xlab="Milk",ylab="计数",main="")
\\在ggplot2程序包中,绘制直方图如下:
> qplot(Milk,data=ws.customer,fill=I("grey"),color=I("black"),
+ binwidth=4000)
\\binwidth参数指定分割的区间的宽度
#箱型图
箱子有三根水平线,从下往上分别是第1四分位数,中位数,第3四分位数。须线(从箱子里延伸出的垂直线)的下限是“第1四分位数-1.5x四分位间距”,上限是“第3四分位数+1.5x四分位间距”范围内的数据的最大值。该范围之外的数据被称为异常值绘制,箱型图是检查异常值的工具。
\\使用boxplot()函数来绘制箱型图
> bosplot(Milk~Channel,data=ws.customer,ylim=c(0,80000))
\\使用ggplot2绘制如下:
> qplot(Channel,Milk,data=ws.customer,geom="boxplot")
#散点图
\\绘制散点图可以如下
> plot(ws.customer$Grocery,ws.customer$Detergents_Paper,
+ xlab="Grocery",ylab="Detergents_Paper")
\\使用gglot2()绘制如下:
> qplot(Grocery,Detergents_Paper,data=ws.customer)
\\另外散点图的大小颜色都可以调节:
> qplot(Grocery,Detergents_Paper,
+ color=Channel,size=Fresh,data=ws.customer)
#逐个绘出图像
> qplot(Grocery,Detergents_Paper,
+ color=Channel,size=Fresh,data=ws.customer,
+ facets=~Channel)
\\如果是指定纵向排列,则应该是Channel~