顺序统计量:按递增顺序排列的向量
:优先级高,1:15-1==(1:15)-1 seq()
rep(x,times)当length(times)=length(x),x中每个元素重复次数是times中的元素值
x>3返回的是逻辑向量(T,F....) all(x)判断逻辑向量x是否都为真
any(x)判断x中是否有真值 any(x>3),返回一个逻辑值
which(x>3)返回x中大于3的位置向量,返回所有满足条件的位置,第一行为满足条件的数据值,第二行为位置
is.na(x)检测缺失值,返回逻辑向量,eg. x[is.na(x)]=0将缺失值修改为0 is.nan(x)检测无限值
is.finite()/is.infinite()检测是否无穷
paste(x,date(),sep=??)函数可以将多个字符串向量通过分隔符sep串联起来,若两向量则对应元素组合起来,paste(x)==as.character(x)
print(x) //打印x
cat(x,y,sep=”\\t”) //将x和y用制表符分开后输出
x=scan(what=character())//读入一个字符串到x,是交互读入,读入时用一个空行结束
complex(),Re(),Im(),Mod(),Arg()关于复数的函数
下标的负整数运算表示扣除相应的元素
names(x)=c()为向量元素增加名字
增加对象长度采用赋值运算方式,缩短对象采用对象子集赋值 x=c(x,1:3)
attr(x,name)存取对象x的name属性 attr(x,name)=c(?a?,?b?)修改name attributes(x)返回对象各属性列表 str(x)//返回x的结构
6
序列的处理:
table(x)对于因子向量统计频数,返回一个带名称的向量,名称为因子,值为频数
unique(x[,1])获取x列1中的唯一元素
index=duplicated(x$V1)找出特定对象或列中重复元素(多个保留一个),返回一个逻辑向量其中真值表示重复的元素x[!index]提取唯一的元素duplicated(x)
rle(x)将x中连续出现的值用一个代替且返回连续出现的次数,返回一个列表values是元素, lengths是连续重复元素重复的次数,没有连续重复的则为1
eg. any(rle(x)$values>2&rle(x)$lengths>3)找出x中连续三个以上相同数字大于2
cumsum(x)将x的每个元素累加,返回一个与x相同长度的向量 eg.cumsum(x)[3]累加到3号元素是多少
eg.cumsum(rle(x)$lengths)[which(rle(x)$values==2&rle(x)$lengths>=3)]找到值为2连续次数大于3的终止位置
cumprod()cummax() cummin()
factor()因子
gl(n,k)产生1:n每个重复k次的因子
apply(x,margin=1,mean)的margin参数1,2表示行或列,但是数据有具体列或者行的名称时可以使用
tapply(x,index,fun)根据index求分组的函数值,index是与x相同长度的因子 eg. x=list(a=c(),b=c('f','m','f'...)) tapply(x$a,x$b,mean)
aggregate(x$V1,list(x$V1,x$V2),length) //针对x的列
array(data,dim)通过dim构造多维数组array(1:10,c(2,3,4)),数组下标从1开始 matrix()构造矩阵
访问数组某个元素在方括号内写上维数,省略某维则该维全选 x[2,3:5,]
7
多元数据特征和相关性分析: 多元数据采用数据框格式输入
cor(data.frame),返回方差或矩阵cov(data.frame)返回相关系数或矩阵 cor.test()根据样本对总体多元变量相关性假设检验
显著性水平a是否决(在置信区间外的概率),置信水平1-a是参数估计落入置信区间的概率,参数估计总的来说就是给定一个显著性水平计算待估计参数以置信水平落入的那个范围 多元性数据R中采用数据框输入,采用cor.test两两相关性检验 t.test是对两组数据的均值检验,cor.test对两组数据的相关性检验
t.test做得是均值检验,因为你的两个向量的均值一样,所以,p-value很大,无法拒绝。 cor.test是用来做相关性检验的, 你的两个向量相关性很大,所以p-value很小,认为两者有很强的相关性?。原假设 xy 相关 ,P-VALUE 应该是x,y相关的概率值,p值小(低于显著性水平)认为相关,否则不相关 多变量先做相关性分析然后做加权平均
stars(x)画星形图,x可以为数据框
轮廓图(相似轮廓一类)和调和曲线图(降维)(一类线扭在一起)对于聚类有帮助
参数估计:根据样本估计总体分布的未知参数(知道总体分布的类型)
点估计:用一个统计量估计一个未知参数(不能反映可信程度,但能给出参数大致多少) 区间估计:两个统计量构成的区间估计一个未知参数(置信区间,置信度,不能说明未知参数具体是多少)p{a 极大似然估计:不同的参数使得总体落入样本值邻域的概率不同,取那个最大概率对应的参数值为估计值。 当似然函数连续时:建立似然函数方程(概率密度函数联乘)对数化,各未知参数求一阶偏导的方程为0构成方程数与参数个数相同的方程组,求解该方程组得到参数值。验证似然函数二阶导数小于0解方为最大似然估计值。注:当方程的二阶黑塞矩阵负定(<0)时方程解才是最大似然估计。当参数空间(未知参数可能的取值范围)为开区域时最大似然估计不适合。 当似然函数有间断点时:需从极大似然估计的定义出发(似然函数取得最大值) 当参数空间离散时:为取似然函数的极大值,采用似然函数的比值求极大值对应的参数估计值 8 当无法求得似然函数的解析式时:采用数值方法 点估计的衡量方法:无偏估计,相合性,有效性 uniroot(f,interval=c(0,10))求根函数,参数interval为区间范围 optimize(f,interval=c(0,10),maximum=F)求得函数f在给定区间interval下的极小(大)值 注:貌似这两个函数都只能返回多个极值点的一个? table(x,cut(x,br=c(0,10,30))将x分为各区间并进行统计计数 chisq.test(x,p)关于x的概率p(按照某种假设分布得到的概率)检验,若p值小于显著性水平则拒绝该假设分布,还可以检验多样本(列联表转换为矩阵形式chisq.test(matrix)) pearson卡方检验要求数据分组后每组频数至少大于等于5 ks.test(x,?pexp?,0.01)进行指数分布检验,原假设为独立 fisher.test(matrix)解决卡方检验分组频数不能小于5的精确检验,原假设为无关 binom.test(x,n)检验n次实验中发生x次的概率eg.binom(sum(x method(x,y,methods=?sperman?)检验x与y是否相关(原假设独立) 马氏距离:? rm(list=ls())删除所有内存对象 help(package='ROBC')查看包的信息(包括函数名) MySQL sudostart mysql mysql -uroot -p 9 library(DBI library(RMySQL) con=dbConnect(MySQL(),user='root',password='123',dbname='cmcc',host='localhost') dbGetQuery(con,'sql') dbWriteTable(con,'name',data) 取子矩阵的几种方式 1) 连续取z[,2:3]:取z矩阵2、3两列 2) 跳跃取z[c(1,3),]:取z矩阵1、3两行 3) 剔除取z[-2,]:剔除z矩阵第2行 如果只是想知道函数有哪些参数,顺序是怎样安排的,就可以用args函数 用example函数就能看到例子的运行结果example(mean) 执行help.start函数可以看到文档的目录: 在网络上搜索跟R有关的信息和问题解答。解决方案\\在R中,可以用RSiteSearch函数搜索关键字或短语:>RSiteSearch(\ scan(filename,what=c(f1=0,NULL,f3='',rep(list(NULL),6),f10=0)跳过指定的列 x=read.fwf('1.txt',widths=c(1,-4,3),as.is=T)没有分隔符的文件跳过2到6列,读取1,7,8,9列,as.is=T表示不转换为因子 readLines('1.csv',n=10)读取文件的10行 gsub()移除逗号 count.fields('1.csv',sep=',')计算每行的字段,最后也可以计算行数wc 用read.table函数,该函数会返回一个数据框(dataframe): >dfrm <- read.table(\colClasses 10