一、绪论:
R语言是什么?
R是一种适用于统计分析计算和图像处理的语言.受S语言和Scheme语言影响发展而来.早期R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作任何修改的在R环境下运行。R的语法是来自Scheme.
R语言如何而来的?
R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman
开发.[因两人名字都是以R 开头 所以也因此形象称为R]
二、基础知识:
1、数据结构(矩阵,数据框,向量,列表)
#定义一个向量并且使用class查看他的属性:
[1] "numeric"
我们看到是数字型的。
#再定义一个向量:
[1] "character"
由于4外面打了引号,所以向量属性是字符型。
我们可以把他转成数值型:
> c
[1] 1 2 3 4
就变成数值了
试试下面的四则混合运算(疑问:2者长度不一样,怎么计算出来的?可以尝试观察下):
d+c
d-c
d*c
d/c
#定义一个矩阵
>M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
#按行填充
>N
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
仔细观察下上面两者写法和结果的差别。
动手试试看下面的矩阵乘法:
M*N
M%*%N
#定义一个list
> D[[1]]<-c(1,2,3)
> D[[2]]<-c(2,3,4)
> D[[3]]<-matrix(1:6,nrow=2)
> D
[[1]]
[1] 1 2 3
[[2]]
[1] 2 3 4
[[3]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
#定义序列
> G2 G3<-rep(c(1,2),2)
> G1
[1] 1 2 3 4 5 6 7 8 9
> G2
[1] 1 2 3 4 5 6 7 8 9
> G3
[1] 1 2 1 2
#读入数据
read.table("路径",header=FALSE,stringsAsFactors=TRUE,fill=TRUE)
2.Apply函数簇和长宽报表转换
#定义矩阵
> N
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
动手试试看:
#按行求和
apply(N,1,sum)
#按列求均值
apply(N,2,mean)
#按列求标准差
apply(N,2,sd)
#按列排序
apply(N,2,sort)
#导入R里面的数据集iris
data(iris)
iris
#用apply函数簇,求每种花的花瓣总长度
tapply(iris$Sepal.Length,iris$Species,sum)
#求每种花瓣,花鄂的标准差
sapply(1:(ncol(iris)-1),function(x) sd(iris[,x]))
apply(iris,2,sd)
#长宽表转换(需要导入reshape和reshape2包)
#### source("http://bioconductor.org/biocLite.R")
#### biocLite()
####
library(reshape)
library(reshape2)
data_reshape 借款周期=c(7,10,14,8,10,12))
data2 data3 data3 colnames(data3) <-c("客户ID","借款金额","借款时间","借款周期")
结果如下: