You can read in just a few rows of the table andthen create a vector of classes from just the few rows. For example,if I have a file called \and determine the column classes from that:
tab5rows <- read.table(\classes <- sapply(tab5rows, class)
tabAll <-read.table(\y=read.table('1.csv',colClasses=c('factor','NULL',NA,rep(list('NULL'),10)))
comment.char
If yourfile has no comments in it (e.g. lines starting with '#'), thensetting 'comment.char = \
appropos('mean')获取类的所有可用方法
strsplit(x,'jx')将字符串x从jx处截断(含有jj的都从中断开)
sample(x,replace=F,prob)抽样函数x为一向量则为其元素的随机排列,若x为一个数字则返回一个从x开始长度为x的随机向量,prob为抽样概率向量
intersect()求交集
回归分析:自变量与因变量的关系不能明确,通过大量样本数据寻找它们的关系 主要问题:回归方程,预测和控制,检验(回归方程、自变量对因变量的影响)
根据数据的位置从数据框中选取出若干列。 解决方案\\选择一列数据的操作如下:dfrm[[n]]
要从数据框中选择多列数据并将其包装成新的数据框,用下面的的表达式:dfrm[n] 这会返回一个仅仅由dfrm的第n列数据构成的数据框。
dfrm[c(n1, n2,……,nk)]这会返回由dfrm的n1、n2、……、nk列构成的数据框。还可以用矩阵下标风格的方式选择一列或多列数据:dfrm[,n]返回的是第n列(假设n只含有一个数值)。dfrm[,c(n1, n2, ..., nk)]返回的是由n1, n2,…, nk列构成的数据框
tapply(x,index,FUN)针对一个变量x按照特定水平index执行FUN(按照水平分组后对分组执行FUN)即按照index的水平对x进行分组然后对每组FUN,x和index长度一样
11
sapply(),lapply()针对对象执行指定的统计函数,后者返回一个和对象相同的类型
sapply(x,FUN, options),sapply和lappy可以针对多个变量,区别是sapply返回向量,lapply返回列表
is.factor(x)//判断是否为因子
round(x)取整
fivenum()returns Tukey?s five-number summary (minimum, lower-hinge, median,upper-hinge,and maximum).
aggregate()only allows you to use single value functions such as
mean,standard deviation, and the like in each call。Forthat task, you can use the by() function. The format is by(data,INDICES, FUN) where data is a data frame or matrix, INDICES is afactor or list of factors that define the groups, and FUN is anarbitrary function.
summaryBy(formula,data=dataframe, FUN=function) where the formula takes the form var1 +var2 + var3 + ... + varN ~ groupvar1 + groupvar2 + … + groupvarNVariables on the left of the ~ are the numeric variables to beanalyzed and variables on the right are categorical groupingvariables. The function can be any built-in or usercreated Rfunction.
Thedescribe.by() function contained in the psych package provides thesame descriptive statistics as describe, stratified by one or moregrouping variables help(package='name')查看包的信息
x%in%y匹配,返回一个逻辑向量,x中匹配y的则为T,否则为F
ifelse(test,yes, no)test为真则返回yes,否则返回no
地理绘图: library(maptools);
x=readShapePoly('bou2_4p.shp'); plot(x,col=gray(924:0/924));
12
plot命令中的col参数在本例中应该是一个长度为925的向量,其第i个分量的取值就代表了地图中第i个多边形的颜色
xaxt='n'去掉默认的x轴坐标,yaxt='n'
barplot(x)画柱状图时,将x的名字改为其他想要的类型,则横坐标为想要的类型,names(x)=...,每个柱状图的名字更改为names.arg=names
summary(x)获取描述性统计量
describe(x)位于Hmisc包(psych包中也有)中,可以返回缺失值、唯一值等统计量 stat.desc(x)位于pastecs包中,返回众多统计量
step()逐步回归(去掉回归方程中不重要的变量),采用去掉变量后降低AIC值作为标准,使得显著性水平提高
add1()增加变量 drop1()查看AIC值减小或者增加的最少并且残差平方和上升最小的变量可以去掉
回归诊断:模型是否合适、是否存在异常样本、稳定性、自变量之间共线性问题、误差项 residuals(lm.obj)计算残差 rstandard(lm.obj)计算标准化残差 update()模型修正函数 coef(lm.obj)提取回归参数
plot(model,2)画正态QQ图,model为lm对象 diffts(lm.obj)cooks.distance(lm.obj)异常值检测
covratio(lm.obj)样本对应的COV值离1越远,则该样本影响越大(可能为异常值) influence.measures(lm.obj)回归诊断的总括
kappa(x)计算矩阵x的条件数(最大特征值和最小特征值的比值),一般大于100小于1000认为x的列间具有较强共线性
kappa(lm.obj)求自变量和因变量组成的矩阵的条件数
ploy(x,degree)将x转换为正交多项式,degree为多项式的阶数小于length(x) preditct(lm.obj,x)线性模型下x的预测值 nls() nlm()求解非线性模型
attr(x,which,value)将x的属性which更改为value
13
x%*%x计算t(x)x xt(x)用x%o%x
方差分析:研究一种或多种因素的变化对实验结果的观测值是否有显著影响
scale(x,center,scale)对x进行转换,center为T时为中心转化,scale为T时是标准转换数据对象x按列进行中心化或标准化
sweep()极差标准转换,极差是指总体各单位的标志值中,最大标志值与最小标志值之差 cor(x)计算相关矩阵
plot(x,y,col='red',log='x',cex=.5,xaxt='n')//将横坐标取对数,横坐标刻度去掉
axis(1,at=c(1,10,100,1000,10000),labels=c(expression(10^\sion(10^\添加指数刻度到横坐标
install.packages('devEMF') library(devEMF) require(devEMF) plot(x)
dev.off()//将图形保存为emf格式
R安装包的方式:假设包在/home/lxj/Downloads下,先cd/home/lxj/Downloads然后R CMD INSTALLpackage//安装包package也可以直接RCMD INSTALL /home/lxj/Downloads/package
或者在R里面安装install.packages(“path/to/yourPackageName”,repos=NULL)
image(x)色图,实际数据大小用不同色彩表示
filled.contour(x,y,z)等高线之间的区域是彩色的,并且绘制彩色对应的值的图例
系统聚类要求一次形成类后就不能改变(hclust),动态聚类开始初略分类然后按照某种最有准则修改不合理的分类(kmeans)。 km <-kmeans(scale(X), 5, nstart = 15); #绘出分类结果图,并标出聚类中心
plot(scale(X),col=km$cluster);points(km$centers,col=1:5,pch=8,cex=5)
centers参数用来设置分类个数(可以先由谱系图确定分类个数),nstart参数用来设置取随机初始中心的次数,其默认值为1,但取较多的次数可以改善聚类效果。Km$cluster可以用来提取每个样本所属的类别。
14
sort(km$cluster)对分类进行排序 #查看聚类结果
km$size#查看聚类结果统计信息,每一类的个数 km[km$cluster==3]#查看第三类结果
问题1:这个百分数含义就是聚类之间的距离差平方与总体距离差平方之间的占比,一般来说越大表示聚类之间的距离越大,也就是说聚类的效果越好.
问题2:这部分包括聚类的结果:cluster是一个整数向量,表示每一个点所分配的聚类, centers表示一个矩阵包含每个聚类的各个部分中心值. totss表示各个整体的距离差平方和 \表示各个聚类内部的距离差平方和
“tot.withinss\表示所有聚类内部距离差的平方和的总合 \表示聚类之间的距离差的平方总合 \每个聚类的大小
当nstart越大时,随机选3个样本点的组合越多,得到最优聚类结果的可能性越大。得到不同聚类结果的可能性越小。
同时运算量也大大的增加了。所以nstart值只能尝试着增加,增加到多次执行结果一致 Kmeans函数的聚类最优标准:
Kmeans函数的聚类最优标准是 km$tot.withinss(所有聚类内部距离差的平方和的总和)的值越小越优,
但一般看(between_SS/ total_SS =87.9 %)就行,这个百分数越大就越优(但不一定合理)。 当矩阵数据特别大时,查看某类中的数据是非常困难的,which(km$cluster==3)查看3类中的数据出现在原矩阵的哪些行
hclust()就是R的分层聚类分析函数,再使用plot(hclust对象,hang)画出系统聚类的树形图,hang取负数谱系图的类从底部画起。
as.dendrogram(object)将系统聚类对象强制为谱系图
plot(object,type=c('rectangle','triangle'),center=F,horiz=F)type是类型矩形是默认值,horiz是否水平放置 实例: data=iris[,-5]
distdist.e=dist(data,method='euclidean')//
heatmap(as.matrix(dist.e),labRow=F,labCol=F)//热图
model1=hclust(dist.e,method='ward')//wardard参数是将类间距离计算方法设置为离差平方和法。使用plot(model1)可以绘制出聚类树图。如果我们希望将类别设为3类,可以使用cutree函数提取每个样本所属的类别。
15