#导入数据,path为路径
path = 'C:\\Users\\Administrator\\Desktop\\Demo.csv'
data = read.csv(path,header = T)
head(data)
summary(data)
apply(data,2,sum)
apply(data,2,var)
attach(data)#将每一列赋给一个向量,向量名为列名
A
detach(data)#取消赋值
A

#数据的中心化处理
x = c(1,2,3,6,3)
m = mean(x)
x - m

#数据的标准化是指数据除以数据集的标准差
"""
在R语言中可以使用scale方法来对数据进行中心化和标准化, 
scale方法中的两个参数center和scale的解释:center和scale默认为真,
center为真表示数据中心化,scale为真表示数据标准化.
"""

options(digits = 3)#限定输出小数点后数字的位数为3位
df = c(1,2,3,6,3)
scale(df,center = T,scale = F)#数据只中心化
scale(df,center = F,scale = T)#数据只标准化
scale(df,center = T,scale = T)#数据既中心化也标准化

#R 中绘制箱线图的函数是boxplot( )
op = par(mfrow = c(1,4))
x=rnorm(100)#生成100个标准正态分布的随机数
y=rt(100,6) #生成100个自由度为6的t分布的随机数
boxplot(x)#画出x的箱线图
boxplot(x,y) #画出x与y的箱线图
boxplot(x,y,names=c("A","B"))
boxplot(x,y,names=c("A","B"),col=c(2,6))
par(op)

#以例3.1.2中数据为例,作出三个公司员工月收入情况的箱图.
boxplot(data)

#R 中还有一个关于茎叶图的函数 stem( ),但此函数不是绘图函数,
其输出结果不是显示在图形窗口中,而是显示在 R 的控制台中.

x = c(64,63,63,65,65,64,67,68,67,69,71,71,72,73,75,75,79,79,58,59,58,57,81,86,86,86,91,94,92,93,97,97,96,92,92,91,91,68,69,67,69,77)
x1 = rbinom(25,100,0.6)
stem(x)
stem(x1)
stem(data)#报错Error in stem(data) : 'x'必需为数值

#R 的函数 hist( )用来绘制样本的直方图.
#hist( )的一般用法为
hist(x, breaks = "Sturges", freq = NULL, probability = !freq, include.lowest = TRUE, right = TRUE, density = NULL, angle = 45, col = NULL)
#其中:x 是由样本值构成的向量;
breaks =规定直方图的组距,其值可取向量,给出各组组限数,给出等距分组组数字符串,给出计算等距分组组数的算法的名称("Sturges"(缺省情况)、"Scott"、"FD")
freq =规定直方图的类型的逻辑值,取 T表示频数分布直方图(缺省),取 F 表示频率密度直方图.
density =规定在矩形内的阴影线密度,缺省为没有阴影线.
angle =规定在矩形内的阴影线角度,缺省为 45 度.
col =规定在矩形内的填充颜色,在用阴影线填充时,阴影线颜色.


#以正态分布为例,取600个标准正态分布的随机数,将组距逐渐缩小,做频数直方图.
x=c(rnorm(600))
op=par(mfrow=c(2,3))
hist(x,breaks =4,col = 4)#分成等距的4个区间作直方图
hist(x,breaks =8,col = 5) #分成等距的8个区间作直方图
hist(x,breaks =20,col = 1); hist(x,breaks =30,col = 3)
hist(x,breaks =50,col = 7); hist(x,breaks =100,col = )
par(op)

#关于其它参数的设置
x=rnorm(600)
op=par(mfrow=c(1,4))
hist(x,freq=F,label=T)
hist(x, freq=F,density=10,angle=60,col=3,border=4,label=T)
hist(x, freq=F , breaks =30,border=2)
hist(x, freq=F ,col=2, breaks =60,border=4)
par(op)

#另外,可以再频率直方图中添加样本的正态曲线,或是核密度估计,
通过函数dnorm()和density来实现,其中 lines( )是画曲线的低级绘图函数,dnorm( )函数是用来计算正态分布的密度函数值.
同理,对于指数分布的随机数,作出频率直方图后可在图上标出他的密度曲线和核密度估计曲线.例如分别运行下列两段程序

w=rnorm(400)
hist(w,freq=F)
x=seq(min(w),max(w),0.2)
lines(x,dnorm(x,mean(w),sd(w)),col='red')
lines(density(w),col='blue')


x=rexp(600,0.01)
hist(x,freq=F)
w=c(0:600)
lines(w,dexp(w,1/mean(x)),col=2)
lines(density(x),col='blue')

#以例3.1.2中的数据为例,可以三个公司员工月收入的频率直方图来进行比较.
attach(data)
op=par(mfrow=c(1,3))
hist(A,freq=F,)
hist(B, freq=F,)
hist(C, freq=F,)
par(op)