R语言学习
文章目录
1.数据的R语言表示
数据框(data frame)
R语言中用函数data.frame()
生成数据框,其句法是:
data.frame(data1,data2,…),例如:
> X=data.frame(x1,x2)
> X
x1 x2
1 171 57
2 175 64
3 159 41
4 155 38
5 152 35
6 158 44
7 154 41
8 164 51
9 168 57
10 166 49
11 159 47
12 164 46
数据框的列名默认为变量名,也可以对列名进行重新命名,例如:
> (X=data.frame('身高'=x1,'体重'=x2) )
身高 体重
1 171 57
2 175 64
3 159 41
4 155 38
5 152 35
6 158 44
7 154 41
8 164 51
9 168 57
10 166 49
11 159 47
12 164 46
2.多元数据的R语言调用
1.从剪切板读取
2.从文本文件读取
3.从Excel文件读取
>X=read.table("data.csv")
注意:若要读取Excel工作簿数据,需安装和调用RODBC包:
>library(RODBC)
>Rcode<-odbcConnectExcel("Rcode.xls")
3.多元数据的简单R语言分析
1.定量变量的分析
(1)展现定量数据
直方图
hist()
函数
hist(x,freq=NULL,…)
> hist(x1) #身高的直方图
(2).定量变量间的关系
散点图plot()函数
plot(x,y,…)
> plot(x1,x2)
2.定性变量的分析
列联表函数
table()
(1)单因素分析
> data=read.table("clipboard",header=T) #剪切板数据读入data
> head(data) #前6组数据
年龄 性别 风险意识 专兼职情况 职业状况 教育程度 投资结果
1 20-29 男 有 兼职 金融 高中 赚钱
2 50-59 女 有 兼职 科教 中学 持平
3 40-49 女 无 专职 科教 中学 赔钱
4 30-39 男 有 兼职 工人 中专 赚钱
5 50-59 女 有 专职 农民 大专 赚钱
6 40-49 女 有 兼职 管理 小学 赚钱
> attach(data) #解析变量
> table(年龄) #一维列联表
年龄
* 0-19 20-29 30-39 40-49 50-59 60-
20 3 92 167 157 51 24
> barplot(table(年龄),col=1:7)
> pie(table(投资结果))
(2)两因素分析
> table(年龄,性别)
性别
年龄 男 女
* 9 11
0-19 2 1
20-29 69 23
30-39 101 66
40-49 89 68
50-59 24 27
60- 15 9
> barplot(table(年龄,性别),beside=T,col=1:7)
> barplot(table(性别,年龄),beside=T,col=1:2)
(3)三因素分析
> ftable(年龄,性别,投资结果) #三维列联表
投资结果 持平 赔钱 赚钱
年龄 性别
* 男 4 3 2
女 3 7 1
0-19 男 0 0 2
女 1 0 0
20-29 男 21 17 31
女 10 7 6
30-39 男 31 30 40
女 30 20 16
40-49 男 31 30 28
女 25 30 13
50-59 男 5 11 8
女 8 10 9
60- 男 7 5 3
女 2 5 2
> (ft=ftable(性别,投资结果,年龄))
年龄 * 0-19 20-29 30-39 40-49 50-59 60-
性别 投资结果
男 持平 4 0 21 31 31 5 7
赔钱 3 0 17 30 30 11 5
赚钱 2 2 31 40 28 8 3
女 持平 3 1 10 30 25 8 2
赔钱 7 0 7 20 30 10 5
赚钱 1 0 6 16 13 9 2
> rowSums(ft)
[1] 99 96 114 79 79 47
> colSums(ft)
[1] 20 3 92 167 157 51 24
> sum(ft)
[1] 514
整理后的频数表:
4.多元数据的直观表示及R使用
> X=read.table("clipboard",header=T,row.names=1)
注意:书中读取有点问题,没有排除第一列,非数值数据,否则后续无法成功运行
1.均值条图及R使用
barplot(X,...)
X为数值向量或数据框
按行做均值图
> barplot(apply(X,1,mean))
按列作均值图
> barplot(apply(X,2,mean))
去掉“食品”按列作的均值图
> barplot(apply(X[,2:8],2,mean))
按列作中位数图
> barplot(apply(X,2,median))
按列作均值图
> pie(apply(X,2,mean))
2.箱尾图及R使用
箱尾图可以比较清晰地表示数据的分布特征,它由四部分组成:
(1)箱子上下的横线为样本的25%和75%分位数,箱子顶部和底部的差值为四分位间距。
(2)箱子中间的横线为样本的中位数。若该横线没有在箱子的中央,则说明样本数据存在偏度。
(3)箱子向上或向下延伸的直线称为“尾线”,若没有异常值,样本的最大值为上尾线的顶部,样本的最小值为下尾线的底部。默认情况下,距箱子顶部或底部大于1.5倍四分位间距的值称为异常值。
(4)图中顶部的圆圈表示该处数据为异常值。该异常值可能是因输入错误、测量失误或系统误差引起的。对例3-1这31个省市八项指标作箱尾图。
boxplot(x,…)
x为数据框
> boxplot(X)
水平放置 horizontal=T
> boxplot(X,horizontal=T)
3.星相图及R使用
星相图是雷达图的多元表示形式,它将每个变量的各个观察单位的数值表示为一个图形,n个观察单位就有n个图,每个图的每个角表示每个变量。
stars(x,full=TRUE,draw,segments=FALSE,…)
x为数值矩阵或数据框
full为图形形状:full=TRUE为圆形,full=FALSE为半圆
draw.segments为分支形状:draw.segments=T为圆形,draw.segments=F为半圆
> stars(X,full=T)
> stars(X,full=F)
上图是根据例3-1数据所作的星相图。共有31个地区,每个星相图的角表示一个变量。从图中可以看出,北京、上海、广东、浙江四个地区的消费情况较为突出,其他地区的消费状况则大致相同。
> stars(X,full=T,draw.segments=T)
> stars(X,full=F,draw.segments=T)
4.脸谱图及R使用
将每个指标用人的脸型的某一部位的形状或大小来表达,通过脸谱之间的差异,反映所对应样品之间的差异特性
faces(X,nrow,plot,ncol,plot,…)
X为数值矩阵,每列代表一个变量
nrow.plot为图形显示行数
ncol.plot为图形显示列数
要先下载包
> install.packages("aplpack")
>library(aplpack)
> faces(X,ncol.plot=7)
effect of variables:
modified item Var
"height of face " "食品"
"width of face " "衣着"
"structure of face" "设备"
"height of mouth " "医疗"
"width of mouth " "交通"
"smiling " "教育"
"height of eyes " "居住"
"width of eyes " "杂项"
"height of hair " "食品"
"width of hair " "衣着"
"style of hair " "设备"
"height of nose " "医疗"
"width of nose " "交通"
"width of ear " "教育"
"height of ear " "居住"
> faces(X[,2:8],ncol.plot=7)
effect of variables:
modified item Var
"height of face " "衣着"
"width of face " "设备"
"structure of face" "医疗"
"height of mouth " "交通"
"width of mouth " "教育"
"smiling " "居住"
"height of eyes " "杂项"
"width of eyes " "衣着"
"height of hair " "设备"
"width of hair " "医疗"
"style of hair " "交通"
"height of nose " "教育"
"width of nose " "居住"
"width of ear " "杂项"
"height of ear " "衣着"
三个发达地区和三个不发达地区比较
> faces(X[c(1,9,19,28,29,30),])
effect of variables:
modified item Var
"height of face " "食品"
"width of face " "衣着"
"structure of face" "设备"
"height of mouth " "医疗"
"width of mouth " "交通"
"smiling " "教育"
"height of eyes " "居住"
"width of eyes " "杂项"
"height of hair " "食品"
"width of hair " "衣着"
"style of hair " "设备"
"height of nose " "医疗"
"width of nose " "交通"
"width of ear " "教育"
"height of ear " "居住"
不得不说,这脸谱着实有点抽象,哈哈~
总结
本小节主要学的是一些关于R语言的数据及图像表达的操作,数据案例表已绑定,继续加油!