数值型:整形、单精度实型、双精度实型
字符型
复数型
逻辑型
缺失的数据默认是NA
Inf表示+∞
Nan表示不是数字的值
可以通过函数mode()知道对象的类型
可以通过函数length()知道对象的长度
对象 | 类型 | 是否允许同一个对象中有多种类型? |
向量 | 数值型、字符型、复数型、逻辑型 | 否 |
因子 | 数值型、字符型 | 否 |
数组 | 数值型、字符型、复数型、逻辑型 | 否 |
矩阵 | 数值型、字符型、复数型、逻辑型 | 否 |
数据框 | 数值型、字符型、复数型、逻辑型 | 是 |
时间序列 | 数值型、字符型、复数型、逻辑型 | 否 |
列表 | 数值型、字符型、复数型、逻辑型、函数、表达式 | 是 |
二、对象的查询与删除
ls() 显示所有在内存中的对象。只列出对象名
ls(pat=”M”)显示出对象名中带有M的所有对象
ls(pat=”^M”)显示以M开头的所有的对象
ls.srt()显示内存中所有对象的详细信息
rm(x)表示删除对象x
rm(x,y)表示删除对象x和y
rm(list=ls())会删除内存中的所有的对象
三、向量的建立
数值型向量的建立
seq()或:
rep()
c()
scan()
字符型向量的建立
字符向量可以通过函数c()连接。
函数paste()可以接受任意个参数,并从他们中顺序取出字符并连成字符串,形成的字符串的个数与参数中最长字符串的长度相同。
>test<-c("green","blue","red")
> test
[1] "green" "blue"
>test<-paste(c("green","red"),1:10,sep="")
> test
[1] "green1" "red2"
[10] "red10"
逻辑型向量的建立
一个逻辑型向量的值可以是true false或 NA
> test<-c(10,5.6,3.1,6.4,21)
> temp<-test>12
> temp
[1] FALSE FALSE FALSE FALSE
因子型向量的建立
因子利用函数factor()创建。
factor()的调用格式如下
factor(x,level = sort(unique(x),na.list = TRUE), labels =levels, exclude = NA, ordered = is.ordered(x))
levels用来指定因子的水平(缺省值是向量中不同的值)
labels用来指定水平的名字
exclude表示从向量x中剔除的水平值
ordered是一个逻辑型选项,用来指定因子的水平是否有次序
常用统计函数
统计函数 | 作用 |
max(x) | 返回向量x中最大的元素 |
min(x) | 返回向量x中最小的元素 |
which.max(x) | 返回向量x中最大元素的下标 |
which.min(x) | 返回向量x中最小元素的下标 |
mean(x) | 计算样本x的均值 |
media(x) | 计算样本x的中位数 |
mad(x) | 计算中位绝对离差 |
var(x) | 计算样本x的方差 |
sd(x) | 计算向量x的标准差 |
range(x) | 返回长度为2的向量c(min(x),max(x)) |
IQR(x) | 计算样本的四分位数极差 |
quantile(x) | 计算样本常用的分位数 |
summary(x) | 计算常用的描述性统计量(最小、最大、平均值、中位数、四分位数) |
length(x) | 返回向量x的长度 |
sum(x) | 给出向量x的总和 |
prod(x) | 给出向量x的乘积 |
rev(x) | 取向量x的逆序 |
sort(x) | 将向量x按升序排序 |
order(x) | 返回x的秩(升序) |
rank(x) | 返回x的秩 |
cumsum(x) | 返回向量x和累积和 |
cumprod(x) | 返回向量x和累积积 |
cummin(x) | 返回向量x和累积最小值 |
cummax(x) | 返回向量x和累积最大值 |
var(x,y) | 计算样本x与y的协方差 |
cov(x,y) | 计算样本x与y的协方差阵 |
cor(x,y) | 计算样本x与y的相关系数 |
outer(x,y) | 计算样本x与y的外积 |
四、数组的建立
数组由函数array()建立,其格式为array(data,dim,dimnames)
其中data为一向量,其元素用于构建数组
dim为数组的维数向量
dimnames为由各维的名称构建的向量,缺省为空
> A<-array(1:8,dim=c(2,2,2))
> A
, , 1
[1,]
[2,]
, , 2
[1,]
[2,]
五、矩阵的建立
因为矩阵是特殊的数组,所以矩阵可以用array()来建立
由于矩阵在数学中的特殊性,在R中最为常用的命令matrix()建立矩阵
对角阵用函数diag()建立
> X<-matrix(1,nr=2,nc=2)
> X
[1,]
[2,]
> X<-diag(3)
> X
[1,]
[2,]
[3,]
注意:
1.循环准则仍适用于matrix() 但要求数据项的个数等于矩阵的列数的倍数,否则会出现警告
2.矩阵的维数使用c()会得到不同的结果,因此要小心
3.数据项填充矩阵的方向可通过参数byrow来定,其缺省是按照列填充的(byrow=FALSE).byrow=TRUE表示按行填充数据。
矩阵运算
1)矩阵的代数运算
转置函数t()
> X<-matrix(1:6,nr=2,nc=3)
> X
[1,]
[2,]
> t(X)
[1,]
[2,]
[3,]
提取对角元diag()
> test<-matrix(1:4,2,2)
> diag(test)
[1] 1 4
几个矩阵按行合并rbind()与按列合并cbind()
> m1<-matrix(1,2,2)
> m2<-matrix(2,2,2)
> rbind(m1,m2)
[1,]
[2,]
[3,]
[4,]
> cbind(m1,m2)
[1,]
[2,]
矩阵的逐元乘积*
> m2*m2
[1,]
[2,]
矩阵的代数乘积%*%
> rbind(m1,m2)%*�ind(m1,m2)
[1,]
[2,]
[3,]
[4,]
> cbind(m1,m2)%*%rbind(m1,m2)
[1,]
[2,]
方阵的行列式det()
> test<-matrix(1:4,2,2)
> test
[1,]
[2,]
> det(test)
[1] -2
2)矩阵统计运算
R中矩阵是按列计算的
求均值
>m<-matrix(rnorm(n=12),nrow=3)
> m
[1,]
[2,]
[3,] -0.89910104 -1.9727371 -0.1280089 0.09809113
> apply(m,MARGIN=1,FUN=mean)
[1] -0.1053036
> apply(m,MARGIN=2,FUN=mean) #求各列的均值
[1] -0.1316039 -0.9028609 -0.1397965
标准化
> scale(m,center=T,scale=T)
六、数据框的建立
统计分析中一个完整的数据集通常是由若干个变量的若干个观测值组成的,在R中称为数据框。
数据框是一个对象,是二维的。
数据框的直接建立
在R中建立一些向量并试图由他们生成数据框,则可以使用函数data.frame()
> x=c(42,7,64,9)
> y=1:4
> z.df=data.frame(INDEX=y,VALUE=x)
> z.df
1
2
3
4
数据框的简单建立
可以通过读取数据文件(文本文件、excel文件、其他数据文件)建立
使用read.table()
使用于数据框的函数
矩阵的统计计算函数max(),min(),media(),var(),sd(),sum(),cumsum(),cumprod(),cummax(),cummin(),cov(),cor()同样使用于数据框,意义也相同
这里通过R内嵌的另一个数据集puromycin来说明summary(),pairs(),xtable()等的使用
> attach(Puromycin)#挂接数据集并使之激活
> help(Puromycin)#显示前几行
starting httpd help server ... done
> summary(Puromycin)#显示主要的描述性统计量
Min.
1st Qu.:0.0600
Median :0.1100
Mean
3rd Qu.:0.5600
Max.
> pairs(Puromycin,panel=panel.smooth)
七、列表的建立
列表中可以包含不同类型的对象
用list()创建
>L<-list(1:6,matrix(1:4,2,2))
> L
[[1]]
[1] 1 2 3 4 5 6
[[2]]
[1,]
[2,]
------------------------------------------------
>L<-list(x=1:6,y=matrix(1:4,2,2))
> L
$x
[1] 1 2 3 4 5 6
$y
[1,]
[2,]
> L$x
[1] 1 2 3 4 5 6
> L[1]
$x
[1] 1 2 3 4 5 6
> L[[1]]
[1] 1 2 3 4 5 6
>
八、时间序列的建立
由函数ts()通过一向量或者矩阵创建一个一元的或多元的时间序列,他称为ts型对象,其调用格式为
ts(data=NA, start=1, end=numeric(0), frequency=1, deltat=1,ts.eps=getOption(“ts.eps”), class, names)
data 一个向量或者矩阵
start 第一个观察值的时间,为一个数字或者是一个由两个整数构成的向量
end 最后一个观察值的时间,指定方法和start相同
frequency 单位时间内观察值的频数
deltat 两个观察值间的时间间隔
ts.eps 序列之间的误差限
class 对象的类型
names一个字符型向量,给出多元序列中每一个元序列的名称,缺省为data中每列数据的名称或者series1,series2,……
> ts(1:10,start=1912)
Time Series:
Start = 1912
End = 1921
Frequency = 1
[1]
> ts(1:47,frequency=12,start=c(1921,10))
1921
1922
1923
1924
1925
>
九、数据的存储与读取
数据的存储
1.保存为文本文件
使用函数write.table()或save()
>write.table(d,file="c:/data/foo.txt",row.names=F,quote=F)
其中row.names=F表示行名不写入文件
quote=F表示变量名不放在双引号中
2.保存R格式文件
> save(d,file="c:/data/foo.Rdata")
数据的读取
1.文本文件数据的读取
read.table()
scan()
read.fwf()
2.excel数据的读取
利用剪贴板
read.delim(“clipboard”)
使用程序包RODBC
library(RODBC)
z<-odbcConnectExcel(“c:/data/body.xls”)
foo<-sqlFetch(z,“Sheet1”)
close(z)
3.R中数据集的读取
1)R中标准数据datasets
>data()
2)专用程序包中的数据集
要读取其他已经安装的专用程序包中的数据,可以用package参数
>data(package=”pkname”) #pkname为已安装的程序包的名字
>data(dataname,packname=”pkname”)#载入程序包pkname中名为dataname的数据集
4.R格式的数据
可以通过程序包foreign读取其他统计软件的数据文件,访问数据库