1.在ggplot2中,图是采用串联起来(+)号函数创建的,每个函数属于自己的部分。library(ggplot2)ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point()++labs(title="AutomobileData",x="Weight",y="MilesPerGallon")
注:aes()函数的功能是指定每个变量扮演的角色,在本例中,变量wt的值以映射到沿x轴的距离,变量mpg的值是映射到沿y轴的距离。ggplot()函数设置图形但没有自己的视觉输出。geom_point()函数在图形中画点,创建了一个散点图。labs()函数是添加注释的。
2.
ggplot(data=mtcars,aes(x=wt,y=mpg))+geom_point(pch=17,color="blue",size=2)+geom_smooth(method="lm",color="red",linetype=2)+labs(title="AutomobileData",x="Weight",y="MilesPerGallon")
注:geom_smooth()函数增加了一条"平滑"曲线。默认情况下,平滑的曲线包括在95%的置信区间(较暗带)内。
3.ggplot2包提供了分组和小面化(faceting)的方法。分组指的是在一个图形中显示两组或多组观察结果。小面化指的是在单独、并排的图形上显示观察组。ggplot2包定义组或面时使用因子。
mtcars$am<-factor(mtcars$am,levels=c(0,1),labels=c("Automatic","manual"))mtcars$vs<-factor(mtcars$vs,levels=c(0,1),labels=c("V-Engine","StraightEngine"))>mtcars$cyl<-factor(mtcars$cyl)>library(ggplot2)>ggplot(data=mtcars,aes(x=hp,y=mpg,shape=cyl,color=cyl))++geom_point(size=3)++facet_grid(am~vs)++labs(title="AutomobileDatabyEngineType",x="Horsepower",y="MilesPerGallon")
4.用几何函数指定图的类型
geom_bar()条形图geom_boxplot()箱线图geom_density()密度图geom_histogram()直方图geom_hline()水平线geom_jitter()抖动图geom_line()线图geom_point()散点图geom_rug()地毯图geom_smooth()拟合曲线geom_text()文字注释geom_violin()小提琴图geom_vline()垂线
5.
ggplot(singer,aes(x=voice.part,y=height))+geom_violin(fill="lightblue")+geom_boxplot(fill="lightgreen",width=0.2)
7.刻面facet_wrap(~var,ncol=n)将每个var水平排列成n列的独立图facet_wrap(~var,nrow=n)将每个var水平排列成n行的独立图facet_grid(rowvar~colvar)rowvar和colvar组合的独立图,其中rowvar表示行,colvar表示列facet_grid(rowvar~.)每个rowvar水平的独立图,配置成一个单列facet_grid(.~colvar)每个colvar水平的独立图,配置成一个单行
8.
data(singer,package="lattice")library(ggplot2)ggplot(data=singer,aes(x=height,fill=voice.part))+geom_density()+facet_grid(voice.part~.)
9.geom_smooth()函数来添加一系列的平滑曲线和置信区域。
ggplot(data=Salaries,aes(x=yrs.since.phd,y=salary,linetype=sex,shape=sex,color=sex))+geom_smooth(method=lm,formula=y~poly(x,2),se=FALSE,size=1)+geom_point(size=2)
10.修改图形外观(1)par()函数或特定图画函数的图形参数来自定义基本函数,但对pplot2图形没有影响。(2)自定义函数scale_x_continuous()scale_y_continuous():breaks=指定刻度标记,labels=指定刻度标记标签,limits=控制要展示的值得范围。scale_x_discrete()scale_y_discrete():breaks=对因子的水平进行放置和排序,labels=指定这些水平的标签,limits=表示哪些水平应该展示coord_flip()颠倒x轴和y轴
ggplot(data=Salaries,aes(x=rank,y=salary,fill=sex))+geom_boxplot()+scale_x_discrete(breaks=c("AsstProf","AssocProf","Prof"),labels=c("Assistant\nProfessor","Associate\nProfessor","Full\nProfessor"))+scale_y_continuous(breaks=c(50000,10000,150000,20000),labels=c("$50k","$100K","$150K","$200K"))+labs(title="FacultySalarybyPankandSex",x="",y="")
11.图例标题的位置由theme()函数中的legend.position选项控制。
ggplot(data=Salaries,aes(x=rank,y=salary,fill=sex))+geom_boxplot()+scale_x_discrete(breaks=c("AsstProf","AssocProf","Prof"),labels=c("Assistant\nProfessor","Associate\nProfessor","Full\nProfessor"))+scale_y_continuous(breaks=c(50000,10000,150000,20000),labels=c("$50k","$100K","$150K","$200K"))+labs(title="FacultySalarybyPankandSex",x="",y="")+theme(legend.position=c(0.1,0.8))
12.标尺
>ggplot(mtcars,aes(x=wt,y=mpg,size=disp))+geom_point(shape=21,color="black",fill="cornsilk")+labs(x="Wight",y="MilesPerGallon",title="hongqianjin",size="Engine\nDisplacement")
ggplot(data=Salaries,aes(x=yrs.since.phd,y=salary,color=rank))+scale_color_brewer(palette="Set1")+geom_point(size=2)
13.得到获得的数据集library(RColorBrewer)display.brewer.all()
14.多重图使用图形参数myrow和基本函数layout()把两个或更多的基本图形放到单个图形中,这个方法在ggplot2包中不适用。将多个ggplot2包的图形放到单个图形中最简单的方式是使用gridExtra包中grid.arrange()函数。
p1<-ggplot(data=Salaries,aes(x=rank))+geom_bar()p2<-ggplot(data=Salaries,aes(x=sex))+geom_bar()p3<-ggplot(data=Salaries,aes(x=yrs.since.phd,y=salary))+geom_point()
library(gridExtra)grid.arrange(p1,p2,p3,ncol=3)
15.保存图形ggsave()函数能更好的保存
library(ggplot2)myplot<-ggplot(data=mtcars,aes(x=mpg))+geom_histogram()ggsave(file="mygraph.png",plot=myplot,width=5,height=4)
ggplot(data=mtcars,aes(x=mpg))+geom_histogram()ggsave(file="hongqianjin.pdf")
没有plot=选项,最近创建的图形会保存
目录
一、SPSS安装及介绍...2
1.SPSS的安装...2
2.SPSS的介绍...2
二、统计学基本知识...3
1.统计学术语...3
2.连续型变量的描述性统计...5
3.分类型变量的统计描述...8
4.-分布...9
5.T-分布...9
6.F-分布...9
7.参数估计...9
8.假设检验...11
三、SPSS分析的整体的思路...13
1.数据的获取...13
2.数据的处理...13
3.数据的预分析...13
4.模型的建立...13
5.报告的攒写...14
安装说明:
注意:请保持您的计算机连接网络!
第一步:双击IBMSPSSStatisticsV21.0进行安装;
第二步:出现选择界面时选择中间选项(即站点许可证);
QA3AW8U62Z4ZWTSPV44VXI65P59OLE547WHIQVZYWLARL9JEYQEGDUBLH8Z3ZCJAL3FLXMS98V95TSDYI7FOEXUPRR
点击下一步,一直到完成。
软件运行图标默认在程序菜单,请右键创建桌面快捷方式。
(1)软件的名称
最早:StatisticalPackageforSocialScience
现在:IBMSPSSStatistics
(2)发展历史
60年代:美国斯坦福大学三位研究生研制
70年代:SPSS总部成立于芝加哥,推出SPSS中小型机版-SPSSX
80年代:微机版(V1~4)SPSS/PC+
90年代:Windows版(V6~10)
本世纪:11~24版,中文版
从被IBM收购之后,SPSS的更新都是一年一个版本,每年的8月中旬,总能见到
(3)基本特点
功能强大:
囊括了各种成熟的统计方法与模型,如方差分析、回归分析、聚类分析等;在数据准备方面,SPSS提供了各种数据准备与数据整理技术,如利用值标签来快捷录入数据、对连续性变量进行离散型转化、将几个小类别合并为一个大类别、重复记录的发现、异常数据发现等;还有各种常用的统计图形
兼容性好:
在数据方面不仅可在SPSS中直接进行数据录入工作,还可将excel表格数据、文本格式数据导入SPSS中进行分析,并且可以在word等软件中使用中文输出结果
易用性强:
强大的统计功能、简单易用、界面的友好、操作的简单,SPSS也向高级用户提供了编程功能
扩展性高:(以一种不同的方式)
SPSS是针对于初学者的一种专业的统计分析软件,它的操作主要是以菜单式为主,页面的设置与excel很类似,可以增加初学者的亲切感,并且,SPSS在进行操作的时候一定会用到的结果按钮,SPSS软件都会默认为选择,目的就是防止初学者忘记选择,这一方面很人性化,所以,对于一种方法的操作,只要记得步骤结果很快的就会出来,但是,SPSS是一种专业的统计分析软件,所以,它的难点不在于软件的操作,而在于结果的查看,SPSS的结果会用到相应的统计基础知识,所以,在进行操作之前,需要了解一些统计学知识。
(1)变量
从一次观察到下一次观察会出现不同结果的某种特征,在SPSS中一列叫做一个变量,如:观察一个企业的销售额,这个月和上个月有所不同;观察股票市场上涨股票的家数,今天与昨天数量不一样;观察一个班学生的生活费支出,一个人和另一个人不一样;投掷一枚骰子观察其出现的点数,这次投掷的结果和下一次也不一样“企业销售额”、“上涨股票的家数”、“生活费支出”、“投掷一枚骰子出现的点数”等就是变量;
在统计学里根据变量的形式与性质可以分为两大类:连续型变量与分类型变量,在后期进行分析的时候都是以分类型变量与连续型变量为主进行分析的,这两类变量其实是有原始的四种变量尺度转化而来的,下面展示的是原始的四种变量尺度在SPSS软件中相应的转化:
(2)个案
在SPSS软件中一行叫做一个个案,即为一个调查的主体
(3)总体与样本
总体(population):包含所研究的全部个体(数据)的集合;
样本(sample):从总体中抽取的一部分元素的集合;
样本量(samplesize):构成样本的元素的数目
(4)概率
概率是对事件发生的可能性大小的度量;如:明天降水的概率是80%。这里的80%就是对降水这一事件发生的可能性大小的一种数值度量;你购买一只股票明天上涨的可能性是30%,这也是一个概率;
一个介于0和1之间的一个值;
事件A的概率记为P(A)
连续变量的统计描述从以下的几个方面:
集中趋势:大部分数值集中到某区间的趋势;
离散趋势:数值向两边分散的趋势;
分布形状(是否对称,分布曲线的形状);
分布特征(单、双峰,有无极端值等)
(1)集中趋势
A:均值
消除了观测值的随机波动;易受极端值的影响
总体平均数:若一组数据X1,X2,…,XN,代表一个大小为N的有限总体,则其总体平均数为:
样本平均数:若一组数据x1,x2,…,xn,代表一个大小为n的有限样本,则其样本平均数为:
样本数据来自总体。样本的统计描述量可以反映总体数据的特征,但由于抽样等原因,使得样本数据不一定能够完全准确地反映总体,它可能与总体的真实值之间存在一定的差异。进行不同次抽样,会得到若干个不同的样本均值,它们与总体均值存在着不同的差异。
B:中位数
把一组数据按递增或递减的顺序排列,处于中间位置上的变量值就是中位数,它是一种位置代表值,所以不会受到极端数值的影响,具有较高的稳健性。
如果为奇数,那么该数列的中位数就是位置(N+1)/2上的数;
如果N为偶数,中位数则是该数列中第N/2与第N/2+1位置上两个数值的平均数。
C:四分位数
四分位数是将一组个案由小到大(或由大到小)排序后,用3个点将全部数据分为四等份,与3个点上相对应的变量称为四分位数,分别记为Q1(第一四分位数)、Q2(第二四分位数)、Q3(第三四分位数)。其中,Q3到Q1之间的距离的一半又称为四分位差,记为Q。四分位差越小,说明中间的数据越集中;四分位数越大,则意味着中间部分的数据越分散,
四分之一位数=n/4
四份之三位数=3n/4
D:众数
一组数据中出现次数最多的变量值;
适合于数据量较多时使用;
不受极端值的影响;
一组数据可能没有众数或有几个众数
(2)离散趋势
A:全距
定义:全距也称为极差,是数据的最大值与最小值之间的绝对差。
在相同样本容量情况下的两组数据,全距大的一组数据要比全距小的一组数据更为分散;
离散程度的最简单测度值:
易受极端值影响:
未考虑数据的分布
计算公式:最大值-最小值
B:方差与标准差
定义:方差是所有变量值与平均数偏差平方的平均值,它表示了一组数据分布的离散程度的平均值。标准差是方差的平方根,它表示了一组数据关于平均数的平均离散程度;
方差和标准差越大,说明变量值之间的差异越大,距离平均数这个“中心”的离散趋势越大
(样本方差)
C:四分位差
也称为内距或四分间距;
上四分位数与下四分位数之差:Qd=QU–QL;
反映了中间50%数据的离散程度;
用于衡量中位数的代表性
D:离散系数
标准差与其相应的均值之比;
对数据相对离散程度的测度;
消除了数据水平高低和计量单位的影响;
用于对不同组别数据离散程度的比较;
(3)分布形状与特征
A:正太分布
定义:若连续型随机变量X的概率分布密度函数为
其中,μ为平均数,^2为方差,则称随机变量X服从正态分布,
记为X~N(μ,^2),不同的μ、不同的,对应于不同的正态分布,正太分布是是关于X=μ对称
B:标准正太分布
标准正态分布:均数μ为0,、标准差为1的正态分布;
标准正太分布主要是用来进行Z得分的计算,Z得分的特点:
也称标准化值;
对某一个值在一组数据中相对位置的度量;
可用于判断一组数据是否有离群点(outlier);
用于对变量的标准化处理;
均值等于0,方差等于1
C:峰度
定义:峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。这个统计量是与正态分布相比较的量。记为β
β>0峰的形状比较尖,比正态分布峰要陡峭,数据比正太时更加的集中;
β<0峰的形状比较缓,比正态分布峰要平坦,数据比正太时分散;
β=0正态分布峰
D:偏度
定义:偏度是描述数据分布形态的,它是描述某变量取值分布对称性的统计量。
计算公式为:
Skewness>0正偏或右偏,长尾在右,峰尖偏左;
Skewness<0负偏或左偏,长尾在左,峰尖偏右;
而偏度的绝对值数值越大表示分布形态的偏斜程度越大。
(1)单个分类变量的统计描述
频数描述:频数就是一个变量在各个变量值上取值的个案数。如要了解学生某次考试的成绩情况,需要计算出学生所有分数取值,以及每个分数取值有多少个人,这就需要用到频数分析
(2)多个分类变量的统计描述
主要是用表格对不同变量下的不同类别的频数进行统计
令Y=X2,则y服从自由度为1的分布,即Y~X(1);
称为具有n个自由度的X2分布;
分布的变量值始终为正;
分布的形状取决于其自由度n的大小,通常为不对称的正偏分布,但随着自由度的增大逐渐趋于对称;
期望为:E(X2)=n,方差为:D(X2)=2n(n为自由度)
也被称为学生分布(student’st);t分布是类似正态分布的一种对称分布,通常要比正态分布平坦和分散。一个特定的分布依赖于称之为自由度的参数。随着自由度的增大,分布也逐渐趋于正态分布,
称F为服从自由度n1和n2的F分布,记为F~F(n1,n2)
A:估计量与估计值
参数估计(parameterestimation)就是用样本统计量去估计总体的参数;
估计量:用于估计总体参数的统计量的名称,如样本均值,样本比例,样本方差等,例如:样本均值就是总体均值μ的一个估计量;
参数用Θ表示,估计量用Θ表示;
估计值:估计参数时计算出来的统计量的具体值。
B:点估计
用样本的估计量的某个取值直接作为总体参数的估计值,例如:用样本均值直接作为总体均值的估计;用两个样本均值之差直接作为总体均值之差的估计;
无法给出估计值接近总体参数程度的信息,由于样本是随机的,抽出一个具体的样本得到的估计值很可能不同于总体真值;
一个点估计量的可靠性是由它的抽样标准误差来衡量的,这表明一个具体的点估计值无法给出估计的可靠性的度量
C:区间估计
在点估计的基础上,给出总体参数估计的一个估计区间,该区间由样本统计量加减估计误差而得到;
根据样本统计量的抽样分布能够对样本统计量与总体参数的接近程度给出一个概率度量,比如,某班级平均分数在75~85之间,置信水平是95%
D:置信水平
将构造置信区间的步骤重复很多次,置信区间包含总体参数真值的次数所占的比例,也称置信度表示为(1–α)%,为是总体参数未在区间内的比例;
常用的置信水平值有99%,95%,90%;
相应的α为0.01,0.05,0.10
E:置信区间
由样本估计量构造出的总体参数在一定置信水平下的估计区间;
统计学家在某种程度上确信这个区间会包含真正的总体参数,所以给它取名为置信区间;
如果用某种方法构造的所有区间中有95%的区间包含总体参数的真值,5%的区间不包含总体参数的真值,那么,用该方法构造的区间称为置信水平为95%的置信区间。同样,其他置信水平的区间也可以用类似的方式进行表述;
总体参数的真值是固定的,而用样本构造的区间则是不固定的,因此置信区间是一个随机区间,它会因样本的不同而变化,而且不是所有的区间都包含总体参数;
实际估计时往往只抽取一个样本,此时所构造的是与该样本相联系的一定置信水平(比如95%)下的置信区间。我们只能希望这个区间是大量包含总体参数真值的区间中的一个,但它也可能是少数几个不包含参数真值的区间中的一个;
当抽取了一个具体的样本,用该样本所构造的区间是一个特定的常数区间,我们无法知道这个样本所产生的区间是否包含总体参数的真值,因为它可能是包含总体均值的区间中的一个,也可能是未包含总体均值的那一个;
一个特定的区间总是“包含”或“绝对不包含”参数的真值,不存在“以多大的概率包含总体参数”的问题;
置信水平只是告诉我们在多次估计得到的区间中大概有多少个区间包含了参数的真值,而不是针对所抽取的这个样本所构建的区间而言的。
F:评价估计量的标准
无偏性:估计量抽样分布的数学期望等于被估计的总体参数;
有效性:对同一总体参数的两个无偏点估计量,有更小标准差的估计量更有效;
一致性:随着样本量的增大,估计量的值越来越接近被估计的总体参数
(1)假设检验的原理
先对总体的参数(或分布形式)提出某种假设,然后利用样本信息判断假设是否成立的统计方法;
逻辑上运用反证法,统计上依据小概率原理;
小概率是在一次试验中,一个几乎不可能发生的事件发生的概率;
在一次试验中小概率事件一旦发生,我们就有理由拒绝原假设
(2)原假设与备择假设
A:原假设
又称“0假设”,研究者想收集证据予以反对的假设,用H0表示;
所表达的含义总是指参数没有变化或变量之间没有关系;
最初被假设是成立的,之后根据样本数据确定是否有足够的证据拒绝它;
总是有符号=,≤或≥;
H0:μ=某一数值;
H0:μ≤某一数值;
H0:μ≥某一数值;
例如,H0:μ=10cm
B:备择假设
也称“研究假设”,研究者想收集证据予以支持的假设,用H1或Ha表示;
所表达的含义是总体参数发生了变化或变量之间有某种关系;
备择假设通常用于表达研究者自己倾向于支持的看法,然后就是想办法收集证据拒绝原假设,以支持备择假设;
总是有符号≠,>或<;
H1:μ≠某一数值;
H1:μ>某一数值;
H1:μ<某一数值
(3)双侧检验与单侧检验
备择假设没有特定的方向性,并含有符号“≠”的假设检验,称为双侧检验或双尾检验(two-tailedtest);
备择假设具有特定的方向性,并含有符号“>”或“<”的假设检验,称为单侧检验或单尾检验(one-tailedtest);
备择假设的方向为“<”,称为左侧检验;
备择假设的方向为“>”,称为右侧检验;
(4)根据P值做出决策
如果原假设为真,所得到的样本结果会像实际观测结果那么极端或更极端的概率;
P值告诉我们:如果原假设是正确的话,我们得到得到目前这个样本数据的可能性有多大,如果这个可能性很小,就应该拒绝原假设;
被称为观察到的(或实测的)显著性水平;
决策规则:若p值<α,拒绝H0;
双侧检验的P值如下:单侧检验的P值如下图的原理一样
我们进行分析的数据主要有两种,一种是二手数据,也就是以其他的形式存在的数据;另一种是新数据,主要是以问卷存在的数据,所以,数据的获取就涉及到两部分,一部分是外部数据的导入,另一种是问卷数据的录入。
将数据获取之后,首先要进行的是数据的处理,主要是重复值、缺失值、数据的验证、加权、选择个案、重组、转置等
数据处理好之后,在建模之前需要进行的是数据的预处理,数据的预处理是进行其他统计分析的基础和前提。通过基本统计方法的学习,可以对要分析数据的总体特征有比较准确的把握,从而有助于选择其他更为深入的统计分析方法,主要是描述统计分析、探索、交叉表等。
根据预分析里面了解到的数据的结构以及业务的要求可以建立一些相应的模型,比如,需要对客户画像可以进行聚类,需要对销售量进行预测可以用回归等。
2017年3月2日
1.各种GUI(图形用户界面)辅助编程
Rstudio:R语言综合开发环境;
Rattle:数据挖掘
RCommander:统计分析
3.工作空间(workspace):R的当前工作环境,用于存储用户定义的对象。
ls():列出工作空间中的对象
rm(objectlist):移除一个或多个对象;
save(objectlist,file="myfile")保存对象object到文件"myfile";
save.image("myfile"):保存工作空间到文件myfile.Rdata;
load("myfile"):读取工作空间myfile.Rdata到当前会话。
sink("hongqianjin",append=false)
写代码
sink()//结束
(1).源文件没有则创建,(2)append=Flase,覆盖原来文件,注意原来文件全部删除,一行都不留。
7.mean()均值
sd()方差
options()显示或设置当前选项
runif()随机数
hist()数据直方图
q()退出R
3.高级编程
4.RStdio运行脚本
>setwd("C:/Users/lx/Desktop")//工作空间调整到sourcetest.R中>source("sourcetest.R")
2017年3月3日
1.模板文件(example.Rmd)是一个纯文本文档,包含以下三个部分(1)报告文字:所有解释性的语句和文字(2)格式化语法:控制报告格式化的标签(3)R代码:要运行的R语法这个模板文件被作为参数传递到rmarkdown包的render()函数中,然后创建出一个网页文件example.html。此网页包含了报告文字和R结果。
2.is.vector(x)检查x是不是向量
4.
byrow是按行进行排列,默认是按列排序
6.因子
7.列表
8.数据的输入
9.
##################数据框patientID<-c(1,2,3,4)age<-c(25,34,28,52)diabetes<-c("Type1","Type2","Type1","Type1")status<-c("Poor","Improved","Excellent","Poor")patientdata<-data.frame(patientID,age,diabetes,status,row.names=patientID)patientdata
#################数据框attach()、detach()和with()summary(mtcars$mpg)plot(mtcars$mpg,mtcars$disp)plot(mtcars$mpg,mtcars$wt)
#attach()attach(mtcars)summary(mpg)plot(mpg,disp)plot(mpg,wt)detach(mtcars)
#with()with(mtcars,{stats<-summary(mpg)stats})
###因子diabetes<-c("Type1","Type2","Type1","Type1")diabetes<-factor(diabetes)
status<-c("Poor","Improved","Excellent","Poor")status<-factor(status,ordered=TRUE)status<-factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))###数值型变量,因子编码gender<-c(1,2,1,2,3)gender<-factor(gender,levels=c(1,2),labels=c("Male","Female"))
###因子实例patientID<-c(1,2,3,4)age<-c(25,34,28,52)diabetes<-c("Type1","Type2","Type1","Type1")status<-c("Poor","Improved","Excellent","Poor")
diabetes<-factor(diabetes)status<-factor(status,order=TRUE)patientdata<-data.frame(patientID,age,diabetes,status)
str(patientdata)
summary(patientdata)
###列表g<-"MyFirstList"h<-c(25,26,18,39)j<-matrix(1:10,nrow=5)k<-c("one","two","three")mylist<-list(title=g,ages=h,j,k)mylist
###数据的输入#使用键盘输入数据mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))mydata<-edit(mydata)
#从带分隔符的文本文件导入数据grades<-read.table("studentgrades.csv",header=TRUE,row.names="StudentID",sep=",",colClasses=c("character","character","character","numeric","numeric","numeric"))#加载包RODBClibrary(RODBC)
#连接MySQL数据库channel<-odbcConnect("MySQL",uid="root",pwd="123")
#查看数据库的表sqlTables(channel)
#读取ODBC数据库中的表到数据库中crs<-sqlFetch(channel,"course")
#向ODBC数据库提交一个查询并保存结果至数据框crs_qry<-sqlQuery(channel,"select*fromcourse")
#关闭连接close(channel)
2017年3月4日
1.广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。2.R中可通过glm()函数拟合广义线性模型。函数的基本形式为:glm(formula,family=family(link=function),data=)3.使用predict()函数,可以观察某个预测变量在各个水平时对结果概率的影响。>testdata<-data.frame(rating=mean(Affairs$rating),age=seq(17,57,10),yearsmarried=mean(Affairs$yearsmarried),religiousness=mean(Affairs$religiousness))>testdataratingageyearsmarriedreligiousness13.93178178.1776963.11647323.93178278.1776963.11647333.93178378.1776963.11647343.93178478.1776963.11647353.93178578.1776963.116473
>testdata$prob<-predict(fit.reduced,newdata=testdata,type="response")>testdataratingageyearsmarriedreligiousnessprob13.93178178.1776963.1164730.335083423.93178278.1776963.1164730.261537333.93178378.1776963.1164730.199295343.93178478.1776963.1164730.148879653.93178578.1776963.1164730.1094738
1.lattice包中的图类型和响应的函数3D等高线图contourplot()z~x*y3D水平图levelplot()z~y*x3D散点图cloud()z~x*y|A3D线框图wireframe()z~y*x条形图barchart()x~A或A~x箱线图bwplot()x~A或A~x点图dotplot()~x|A柱状图histogram()~x核密度图densityplot()~x|A*B平行坐标曲线图parallelplot()dataframe散点图xyplot()y~x|A散点图矩阵splom()dataframe线框图stripplot()A~x或x~A
xyplot(mpg~disp|transmission,data=mtcars,scales=list(cex=0.8,col="red"),panel=panel.smoother,xlab="Displacement",ylab="MilesperGallon"main="uuu"
2017年3月5日
4.主成分分析:Kaiser-Harris准则建议保留特征值大于1的主成分,特征值小于1的成分所解释的方差比包含在单个变量中的方差更少。5.探索性因子分析:Kaiser—Haris准则的特征值大于0,而不是大于1.
2017年3月6日
###加载RODBClibrary(RODBC)
安装mysql驱动,并在管理工具中配置
###连接RMySQL数据库channel<-odbcConnect("RODBC",uid="root",pwd="123456")
###查看数据库的表sqlTables(channel)
###读取ODBC数据库中表到Rorderdetail<-sqlFetch(channel,"orderdetail")
###向ODBC数据库提交查询orderdetail_qry<-sqlQuery(channel,"select*fromorderdetailwhereproductNo='P20050001'")avg_quantity<-sqlQuery(channel,"select*,avg(quantity)fromorderdetailgroupbyproductNo")###关闭连接close(channel)
#####RMySQLlibrary(RMySQL)#创建MySQL数据库的连接
con<-dbConnect(MySQL(),host="127.0.0.1",dbname="mysql",username="root",password="123",port=3308)#获取连接信息summary(con)
dbInfo<-dbGetInfo(con)#返回数据框信息的列表dbInfo[["host"]]dbInfo[[1]]dbInfo$host#查看database下的所有表dbListTables(con)
#删除数据库中的表格dbRemoveTable(con,"fruits")
###写数据库表fruits<-data.frame(id=1:5,name=c("apple","banana","pear","corn","watermelon"),price=c(8.8,4.98,7.8,6,2.1),status=c("none","discount","none","sellout","wholesale"))dw<-dbWriteTable(con,"fruits",fruits)
###从数据库读取表fruitdb<-dbReadTable(con,"fruits")
dbSendQuery(con,'SETNAMESutf8')
Encoding(fruitdb)<-"UTF-8"
###写数据表,覆盖追加testA<-data.frame(id=1:6,e=c("a","b","c","d","e","f"))testB<-data.frame(id=7:13,e=c("g","h","i","j","k","l","m"))dbWriteTable(con,"test",testA,row.names=F)test1<-dbReadTable(con,"test")
dbWriteTable(con,"test",testB,append=T,row.names=F)dbReadTable(con,"test")
##覆盖写testBdbWriteTable(con,"test",testB,overwrite=TRUE)
###dbGetQuery()和dbSendQuery()两种方法dbGetQuery(con,"select*fromfruitslimit3")
#dbSendQuery()res<-dbSendQuery(con,"select*fromfruits")data<-dbFetch(res,n=2)dbClearResult(res)
dbDisconnect(con)
#用SQL语句批量查询
con<-dbConnect(MySQL(),host="127.0.0.1",dbname="mysql",username="root",password="123",port=3308,client.flag=CLIENT_MULTI_STATEMENTS)#client.flag
sql<-"select*fromfruits;select*fromtest"res1<-dbSendQuery(con,sql)
dbFetch(res1,n=6)
if(dbMoreResults(con)){res2<-dbNextResult(con)dbFetch(res2,n=-1)}
dbClearResult(res1)dbClearResult(res2)
2017年3月7日
1.
2.缺失值
4.日期
5.数据的排序
6.数据集的合并
7.分类
1.决策树是数据挖掘领域中的常用模型。其基本思想是对预测变量进行二元分离,从而构造一棵可用于预测新样本单元所属类别的树。2.R中的rpart包支持rpart()函数构造决策树,prune()函数对决策树进行剪枝。3.在完整树的基础上,prune()函数根据复杂度参数减掉最不重要的枝,从而将树的大小控制在理想的范围内。4.rpart.plot包中的prp()函数可用于画出最终决策树。5.随机森林是一种组成式的有监督学习方法。随机森林的算法涉及对样本单元和变量进行抽样,从而生成大量决策树。对每个样本单元来说,所有决策树依次对其进行分类,所有决策树预测类别中的众数类别即为随机森林所预测的这一样本单元的类别。6.randomForest包根据传统决策树生成随机森林,而party包中的cforest()函数则可基于条件推断树生成随机森林。7.支持向量机(SVM)是一类可用于分类和回归的有监督机器学习模型。其流行归功于两个方面:一方面,它们可输出较准确的预测结果;另一方面,模型基于较优雅的数学理论。8.SVM可以通过R中kernlab包的ksvm()函数和e1071包中的svm()函数实现。
8.处理缺失数据的高级方法
1.缺失数据分为三类:(1)完全随机缺失(2)随机缺失(3)非随机缺失2.函数is.na()is.nan()和is.infinite()可分别用来识别缺失值、不可能值和无穷值3.三种流行的缺失值处理方法:推理法、行删除法和多重插插补
2017年3月9日
#创建leadership数据框manager<-c(1,2,3,4,5)date<-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")country<-c("US","US","UK","UK","UK")gender<-c("M","F","F","M","F")age<-c(32,45,25,39,99)q1<-c(5,3,3,3,2)q2<-c(4,5,5,3,2)q3<-c(5,2,5,4,1)q4<-c(5,5,5,NA,2)q5<-c(5,5,2,NA,1)
leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors=FALSE)
###创建新变量mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))mydata$sumx<-mydata$x1+mydata$x2mydata$meanx<-(mydata$x1+mydata$x2)/2
attach(mydata)mydata$sumx<-x1+x2mydata$meanx<-(x1+x2)/2detach(mydata)
mydata<-transform(mydata,sumx=x1+x2,meanx=(x1+x2)/2)
###变量的重编码leadership$age[leadership$age==99]<-NA
leadership$agecat<-NA
leadership$agecat[leadership$age>75]<-"Elder"leadership$agecat[leadership$age>=55&leadership$age<=75]<-"MiddleAged"leadership$agecat[leadership$age<55]<-"Young"
###变量的重命名#方式1fix(leadership)
#方式2names(leadership)names(leadership)[2]<-"testDate"names(leadership)[6:10]<-c("item1","item2","item3","item4","item5")
#方式3install.packages("plyr")library(plyr)leadership<-rename(leadership,c(manager="managerID"))###缺失值y<-c(1,2,3,NA)is.na(y)
#在分析中排除缺失值x<-c(1,2,NA,3)z<-sum(x)y<-sum(x,na.rm=TRUE)leadership
newdata<-na.omit(leadership)newdata
###日期值mydates<-as.Date(c("2007-06-22","2004-02-13"))
strDates<-c("01/05/1965","08/16/1975")dates<-as.Date(strDates,"%m/%d/%Y")
myformat<-"%m/%d/%y"leadership$testDate<-as.Date(leadership$testDate,myformat)
Sys.Date()date()
today<-Sys.Date()format(today,format="%B%d%Y")
format(today,format="%A")
#日期运算startdate<-as.Date("2004-02-13")enddate<-as.Date("2011-01-22")days<-enddate-startdate
#类型转换a<-c(1,2,3)ais.numeric(a)is.vector(a)
a<-as.character(a)a
is.numeric(a)is.vector(a)is.character(a)
###数据排序newdata<-leadership[order(leadership$age),]
attach(leadership)newdata<-leadership[order(gender,age),]detach(leadership)
attach(leadership)newdata<-leadership[order(gender,-age),]detach(leadership)
###merge##usecharactercolumnsofnamestogetsensiblesortorderauthors<-data.frame(surname=I(c("Tukey","Venables","Tierney","Ripley","McNeil")),nationality=c("US","Australia","US","UK","Australia"),deceased=c("yes",rep("no",4)))books<-data.frame(name=I(c("Tukey","Venables","Tierney","Ripley","Ripley","McNeil","RCore")),title=c("ExploratoryDataAnalysis","ModernAppliedStatistics...","LISP-STAT","SpatialStatistics","StochasticSimulation","InteractiveDataAnalysis","AnIntroductiontoR"),other.author=c(NA,"Ripley",NA,NA,NA,NA,"Venables&Smith"))
m1<-merge(authors,books,by.x="surname",by.y="name")
###数据框子集#dataframe[rowindices,columnindices]
#列子集#两种方式:第一种是列下标,第二种方式是列名称
#删除数据框的列#三种方式#第一种方式:逻辑向量leadership[,!names(leadership)%in%c("q3","q4")]
#第二种方式:dataframe$colname<-NULL
#第三种方式:dataframe[,c(-列下标)]leadership[,-which(names(leadership)=="q3")]
leadership[,-which(names(leadership)%in%c("q3","q4"))]
#####使用sqldf()函数a<-sqldf("select(q1+q2+q3+q4+q5)/5fromleadership")leadership$averge<-a[[1]]View(leadership)
sqldf("selectgender,avg(age)fromleadershipgroupbygender")
###
#######数值和字符处理函数###数学函数abs(x)
sqrt(x)
ceiling(x)
floor(x)
trunc(x)获取x中的整数部分
round(x,digits=n)x舍入到指定位的小数
signif(x,digits=n)舍入x为指定的有效数字位数
log(x,base=n)对x取以n为底的对数
log(x)为自然对数log10(x)为常用对数
exp(x)指数函数
###统计函数mean()mean(c(1,2,3,4))
median()median(c(1,2,3,4))
sd()sd(c(1,2,3,4))
var()var(c(1,2,3,4))
mad()(medianabsolutedeviation)mad(c(1,2,3,4))quantile(x,probs)求分位数quantile(x,c(.3,.85))
range()range(c(1,2,3,4))
sum()
diff(x,lag=n)滞后差分x<-c(1,5,23,29)diff(x)
min(c(1,2,3,4))
max(c(1,2,3,4))
#scale()对矩阵或数据框的指定列进行均值scale(x,center=1,scale=1)
#实例x<-1:8
mean(x)sd(x)
n<-length(x)meanx<-sum(x)/ncss<-sum((x-meanx)^2)sdx<-sqrt(css/(n-1))
meanxsdx
###字符处理函数nchar(x)#计算x中的字符数量x<-c("ab","cde","fghij")length(x)nchar(x[3])
substr(x,start,stop)提取或替换x<-"abcdef"substr(x,2,4)substr(x,2,4)<-"222"
#在x中搜索模式,fixed=TRUE,则pattern为一个文本字符串globalregularexpressionprintgrep(pattern,x,ignore.case=FALSE,fixed=FALSE)
grep("A",c("b","A","c"),fixed=TRUE)
#在x中搜索pattern,并以文本replacement将其替换#fixed=FALSE,pattern为一个正则表达式
sub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE)sub("\\s",".","HelloThere")
#按split分割x,返回字符向量strsplit(x,split,fixed=FALSE)
y<-strsplit("abc","")
#连接字符串,连接符为sep#可以连接多个向量paste(...,sep="")
paste("x",1:3,sep="")paste("x",1:3,sep="M")paste("Todayis",date())
#大写转换toupper(x)toupper("abc")
#小写转换tolower(x)tolower("ABC")
############其他实用函数length()x<-c(2,5,6,9)length(x)
###seq(from,to,y)生成一个序列indices<-seq(1,10,2)
#rep(x,n)将x重复n次y<-rep(1:3,2)
#连接...对象,并输出到屏幕cat(...)
name<-"Bob"cat("Hello",name,"\b.\n")
###cat和paste的区别x<-c("x","x","x")y<-c("a","b","c")
paste(x,y,sep="")#向量元素依次连接cat(x,y)#向量间连接
x<-c("x","y")y<-c("a","b","c")
paste(x,y,sep="")###以向量形式保存结果cat(x,y)###保存结果为空,不保存连接结果,仅输出
mydata<-matrix(rnorm(30),nrow=6)mydata
apply(mydata,1,mean)
apply(mydata,2,mean)
apply(mydata,2,mean,trim=0.2)
###控制流——重复和循环for(iin1:10)print("Hello")
i<-10while(i>0){print("Hello");i<-i-1;}
###条件执行grade<-c("A","A","B","B","C")
if(is.character(grade)){grade<-as.factor(grade)}
if(!is.factor(grade)){grade<-as.factor(grade)}else{print("Gradealreadyisafactor")}
#ifelse()score<-0.6
score<-0.3ifelse(score>0.5,print("Passed"),print("Failed"))
outcome<-ifelse(score>0.5,"Passed","Failed")
###switch示例feelings<-c("sad","afraid")
for(iinfeelings){print(switch(i,happy="Iamgladyouarehappy",afraid="Thereisnothingtofear",sad="Cheerup",angry="Calmdownnow"))}
###用户自编函数#mystats():描述性统计量计算函数mystats<-function(x,parametric=TRUE,print=FALSE){
if(parametric){center<-mean(x);spread<-sd(x);}else{center<-median(x);spread<-mad(x);}if(print¶metric){cat("Mean=",center,"\n","SD=",spread,"\n")}elseif(print&!parametric){cat("Median=",center,"\n","MAD=",spread,"\n")}result<-list(center=center,spread=spread)return(result)}
set.seed(1234)x<-rnorm(500)y<-mystats(x)y$centery$spread
y<-mystats(x,parametric=FALSE,print=TRUE)
mydate<-function(type="long"){switch(type,long=format(Sys.time(),"%A%B%d%Y"),short=format(Sys.time(),"%m-%d-%d"),cat(type,"isnotarecognizedtype\n"))}
mydate("long")
mydate("short")
mydate()
mydate("medium")
#####矩阵的转置cars<-mtcars[1:5,1:4]cars
t(cars)
###整合数据options(digits=3)attach(mtcars)aggdata<-aggregate(mtcars,by=list(Group.cyl=cyl,Group.gear=gear),FUN=mean,na.rm=TRUE)###reshape2包install.packages("reshape2")
ID<-c(1,1,2,2)Time<-c(1,2,1,2)X1<-c(5,3,6,2)X2<-c(6,5,1,4)
mydata<-data.frame(ID=ID,Time=Time,X1=X1,X2=X2)
library(reshape2)md<-melt(mydata,id=c("ID","Time"))
dcast(md,ID~variable,mean)dcast(md,Time~variable,mean)dcast(md,ID~Time,mean)
dcast(md,ID+Time~variable)dcast(md,ID+variable~Time)
dcast(md,ID~variable+Time)
###实例options(digits=2)
Student<-c("JohnDavis","AngelaWilliams","BullwinkleMoose","DavidJones","JaniceMarkhammer","CherylCushing","ReuvenYtzrhak","GregKnox","JoelEngland","MaryRayburn")Math<-c(502,600,412,358,495,512,410,625,573,522)Science<-c(95,99,80,82,75,85,80,95,89,86)English<-c(25,22,18,15,20,28,15,30,27,18)
roster<-data.frame(Student,Math,Science,English,stringsAsFactors=FALSE)
###计算综合得分z<-scale(roster[,2:4])score<-apply(z,1,mean)roster<-cbind(roster,score)
###对学生评分roster$grade<-NAy<-quantile(score,c(.8,.6,.4,.2))roster$grade[score>=y[1]]<-"A"roster$grade[score name<-strsplit((roster$Student),"") Lastname<-sapply(name,"[",2)Firstname<-sapply(name,"[",1)roster<-cbind(Firstname,Lastname,roster[,-1]) roster<-roster[order(Lastname,Firstname),] 2017年3月10日 1.R语言的各种分布函数 rnorm(n,mean=0,sd=1)高斯(正态) rexp(n,rate=1)指数 rgamma(n,shape,scale=1)γ分布 rpois(n,lambda)Poisson分布 rweibull(n,shape,scale=1)Weibull分布 rcauchy(n,location=0,scale=1)Cauchy分布 rbeta(n,shape1,shape2)β分布 rt(n,df)t分布 rf(n,df1,df2)F分布 rchisq(n,df)Χ2分布 rbinom(n,size,prob)二项 rgeom(n,prob)几何 rhyper(nn,m,n,k)超几何 rlogis(n,location=0,scale=1)logistic分布 rlnorm(n,meanlog=0,sdlog=1)对数正态 rnbinom(n,size,prob)负二项分布 runif(n,min=0,max=1)均匀分布 rwilcox(nn,m,n),rsignrnak(nn,n)Wilcoxon分布 2017年3月12日 1.R语言prod()连乘 sort()排序 rev()倒序 seq()按某种规律产生数列 t()矩阵转置 diag()求矩阵对角线,求向量的为对角线矩阵,求标量为劫数的向量 2017年3月13日 >x<-rnorm(5)>x[1]-0.11057372.5691194-0.4457731-0.9396918[5]1.0528433 创建一个名为x的向量,它包含5个来自标准正态分布的随机偏差。 2.mean()均值 sd()标准差 demo()图形实例 2017年3月14日 1.批处理RCMDBATCHoptionsinfileoutfile 2.lm()回归summary()显示分析结果统计概要cooks.distance()计算和保存影响度量统计量plot()绘图predict()预测 创建数据集 15.read.xlsx()导入Excel数据(library(xlsx))16.导入spss数据read.spss()library(foreign)spss.get()library(Hmisc)spss.get()是对read.spss()的一个封装 17.导入SASread.ssd()library(foreign)sas.get()library(Hmisc)read.sas7dbat()library(sas7dbat) 18.函数factor()可为类别型变量创建值标签 19.处理数据对象的使用函数length()显示对象中元素/成分的数量dim()显示某个对象的维度str()显示某个对象的结构class()显示某个对象的类或类型mode()显示某个对象的模式names()显示某对象中各成分的名称c()将对象合并入一个向量cbind()按列合并对象rbind()按行合并对象object()输出某个对象head()列出某个对象的开始部分tail()列出某个对象的最后部分ls()显示当前的对象列表rm()删除一个或更多个对象newobject<-edit()编辑对象并另存为newobjectfix()直接编辑对象 dose<-c(20,30,40,45,60)drugA<-c(16,20,27,40,60)drugB<-c(15,18,25,31,40) plot(dose,drugA,type="b") ###图形参数opar<-par(no.readonly=TRUE)###复制当前的图形参数设置 par(lty=2,pch=17)###设置参数plot(dose,drugA,type="b")###根据设置的参数绘制图形 par(opar)###还原原始设置 ###图形参数——符号和线条plot(dose,drugA,type="b",lty=3,lwd=3,pch=15,cex=2) ###添加文本、自定义坐标轴和图例###函数自带参数设置选项plot(dose,drugA,type="b",col="red",lty=2,pch=2,lwd=2,main="ClinicalTrialsforDrugA",sub="Thisishypotheticaldata",xlab="Dosage",ylab="DrugResponse",xlim=c(0,60),ylim=c(0,70))annotation###自定义坐标轴示例windows()x<-1:10y<-xz<-10/x opar<-par(no.readonly=TRUE) ###增加边界大小par(mar=c(5,4,4,8)+0.1) ###绘制x对y的图形plot(x,y,type="b",pch=21,col="red",yaxt="n",lty=3,ann=FALSE)###添加x对1/x的直线lines(x,z,type="b",pch=22,col="blue",lty=2) ###自定义坐标轴axis(2,at=x,labels=x,col.axis="red",las=2) axis(4,at=z,labels=round(z,digits=2),col.axis="blue",las=0,cex.axis=0.7,tck=-.01)mtext("y=1/x",side=4,line=3,cex.lab=1,las=2,col="blue")title("AnExampleofCreativeAxes",xlab="Xvalues",ylab="Y=X")par(opar) ###图例windows()dose<-c(20,30,40,45,60)drugA<-c(16,20,27,40,60)drugB<-c(15,18,25,31,40) par(lwd=2,cex=1.5,font.lab=2) plot(dose,drugA,type="b",pch=15,lty=1,col="red",ylim=c(0,60),main="DrugAvs.DrugB",xlab="DrugDosage",ylab="DrugResponse")lines(dose,drugB,type="b",pch=17,lty=2,col="blue")###添加图例legend(locator(1),title="DrugType",c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue")) par(opar) ###文本标注attach(mtcars)plot(wt,mpg,main="Mileagevs.CarWeight",xlab="Weight",ylab="Mileage",pch=18,col="blue")text(wt,mpg,row.names(mtcars),cex=0.6,pos=4,col="red")detach(mtcars) ###展示不同字体族的代码opar<-par(no.readonly=TRUE)par(cex=1.5)plot(1:7,1:7,type="n") text(3,3,"Exampleofdefaulttext")text(4,4,family="mono","Exampleofmono-spacedtext")text(5,5,family="serif","Exampleofseriftext") attach(mtcars)opar<-par(no.readonly=TRUE)par(mfrow=c(2,2)) plot(wt,mpg,main="Scatterplotofwtvs.mpg")plot(wt,disp,main="Scatterplotofwtvs.disp")hist(wt,main="Histogramofwt") boxplot(wt,main="Boxplotofwt") detach(mtcars) ###三行一列attach(mtcars)opar<-par(no.readonly=TRUE)par(mfrow=c(3,1)) hist(wt)hist(mpg)hist(disp) ###函数layout()attach() layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))hist(wt)hist(mpg)hist(disp) attach(mtcars) layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths=c(3,1),heights=c(1,2))hist(wt)hist(mpg)hist(disp) ###图形布局的精细控制windows()opar<-par(no.readonly=TRUE) par(fig=c(0,0.8,0,0.8))plot(mtcars$wt,mtcars$mpg,xlab="MilesPerGallon",ylab="CarWeight") par(fig=c(0,0.8,0.6,1),new=TRUE)boxplot(mtcars$wt,horizontal=TRUE,axes=FALSE) par(fig=c(0.7,1,0,0.8),new=TRUE)boxplot(mtcars$mpg,axes=FALSE) mtext("EnhancedScatterplot",side=3,outer=TRUE,line=-3) 图形初阶 1.par()指定图形参数选项其中参数no.readonly=TRUE可以生成一个可以修改的当前参数列表 2.用于指定符号和线条类型的参数pch:指定绘图时使用的符号cex:指定符号的大小lty:指定线条的类型lwd:指定线条的宽度 3.函数rgb()可基于红-绿-蓝三色值生成颜色,hsv()则基于色相-饱和度-亮度值来生成颜色>rgb(1,1,1)[1]"#FFFFFF">hsv(0,0,1)[1]"#FFFFFF" 4.R用于创建连续型颜色向量的函数:rainbow()、heat.colors()、terrain.colors()、topo.colors()、cm.colors()5.使用函数brewer.pal(n,name)来创建一个颜色值得向量,包(library(RColorBrewer)>library(RColorBrewer)>n<-7>mycolors<-brewer.pal(n,"Set1")##从Set1调色版中抽取了7种用十六进制表示的颜色并返回一个向量>barplot(rep(1,n),col=mycolors)>aa<-barplot(rep(1,n),col=mycolors)>aa[,1][1,]0.7[2,]1.9[3,]3.1[4,]4.3[5,]5.5[6,]6.7[7,]7.9>mycolors[1]"#E41A1C""#377EB8""#4DAF4A""#984EA3""#FF7F00""#FFFF33""#A65628" 6.font用于指定绘图使用的字体样式。常规=1,粗体=2,斜体=3,粗斜体=4,符号字体(以Adobe符号编码表示)=57.在plot语句或单独的par()语句中添加ann=FALSE来移除某些高级绘图函数已经包含了默认的标题和标签。8.axis():自定义的坐标图las:标签是否平行于(=0)或垂直于(=2)坐标轴tck:刻度线的长度(负值:图形外侧,正直:图形内侧,0表示禁用刻度线,1表示绘制网格线)axes=FALSE将禁用全部坐标轴。xaxt="n"和yaxt="n"将分别禁用X轴或y轴(会留下框架,只是去除了刻度)8.lines()语句可以为一幅现有图形添加新的图形元素。9.mtext()用于在图形的边界添加文本10.函数abline()可以用来为图形添加惨嚎线11.函数legend()来添加图例12.text()可向绘图区域内部添加文本(也可以用来标示图形中的点),而mtext()则向图形的四个边界之一添加文本。 13.在R中使用函数par()或layout()可以组合多副图形为一幅总括图形在par()函数中使用图形参数mfrow=c(nrows,ncols)来创建按行填充的图形矩阵,mfcol=c(nrows,nclos)按列填充函数layout()的调用形式为layout(mat),其中mat是一个矩阵,它指定了所要组合的多个图的所在位置。14.绝对宽度(以厘米为单位)可以通过函数lcm()来指定15.par()函数中可以使用图形参数fig=c(x1,y1,x2,y2)将若干图形以任意排布方式组合到单幅图形中。fig=默认会创建一幅图形,所以在添加到一幅现有的图形上时,请设定参数new=TRUE.par(fig=c(0,0.5,0.55,1),new=TRUE) 数学知识 2017年3月15日 1.依据随机化思想的统计方法:置换检验和自助法2.coin包对于独立性问题提供了一个非常全面的置换检验的框架,而lmPerm包则专门用来做方差分析和回归分析的置换检验。3.置换检验都是使用伪随机数来从所有可能的排列组合总进行抽样(当做近似检验时)。因此,每次检验的结果都所不同。4.在coin包中,类别型变量和序数变量必须分别转化为因子和有序因子。另外,数据要以数据框形式存储。5.相对于传统检验,提供可选置换检验的coin函数检验coin函数两样本和K样本置换检验oneway_test(y~A)含一个分层(区组)因子的两样本和K样本置换检验oneway_test(y~A|C)Wilcoxon-Mann-Whitney秩和检验wilcox_test(y~A)Kruskal-Wallis检验kruskal_test(y~A)Pearson卡方检验chisq_test(A~B)Cochran-Mantel-Haenszel检验cmh_test(A~B)线性关联检验lbl_test(D~E)Spearman检验spearman_test(y~x)Friedman检验friedman_test(y~A|C)Wilcoxon符号秩检验wilcoxsign_test(y1~y2)注:在coin函数中,y和x是数值变量,A和B是分类因子,C是类别型区组变量,D和E是有序因子,y1和y2是匹配的数值变量 6.如变量都是有序8型,可使用lbl_test()函数(线性关联检验)来检验是否存在线性趋势。7.spearman_test()函数提供了两数值变量的独立性置换检验。8.对于两配对组的置换检验,可使用wilcoxsign_test()函数;对于两组时,使用friedman_test()函数。9.independence_test()函数可以从置换角度来思考大部分传统检验,进而在面对无法用传统方法解决的问题时,使用户可以自己构建新的统计检验。 10.lmPerm包可做线性模型的置换检验。 2017年2月16日 1.数学函数abs()绝对值sqrt()平方根ceiling()不小于x的最小整数floor()不大于x的最大整数trunc()向0的方向截取的x中的整数部分round(x,digits=n)将x舍入为指定的小数signif(x,digits=n)将x舍入为指定的有效数字位数cos(),sin()、tan()余弦、正弦、正切、acos()、asin()、atan()反余弦、反正弦和正切cosh(x)、sinh(x)、tanh(x)双曲余弦、双曲正弦和双曲正切acosh(x)、asinh(x)、atanh(x)反双曲余弦、反双曲正弦和反双曲正切log(x,basen)对x取以n为底的对数log(x)为自然对数log10(x)为常用对数exp(x)指数函数 2.统计函数mean()平均数median()中位数sd()标准差var()方差mad()绝对中位差quantile()求分位数range()求值域sum()求和diff()滞后差分min()求最小值max()求最大值scale(x,center=TRUE,scale=TRUE)为数据对象x按列进行中心化(center=TRUE)或标准化(center=TRUE,scale=TRUE)默认情况下,函数scale()对矩阵或数据框的指定列进行均值为0、标准差为1的标准化公式scale(mydate)*SD+M(SD为想要的标准差、M为想要的均值) 3.概率分布Beta分布beta二项分布binom柯西分布cauchy(非中心)卡方分布chisq指数分布expF分布fGamma分布gamma几何分布geom超几何分布hyper对数正态分布lnormLogistic分布logis多项分布multinom负二项分布nbinom正态分布norm泊松分布poisWilcoxon符号秩分布signrankt分布t均匀分布unifWeibull分布weibullWilcoxon秩和分布wilcox注:如果不指定一个均值和一个标准差,则函数将假设其为标准正态分布(均值为0,标准差为1)。 4.密度函数(dnorm)、分布函数(pnorm)、分位数函数(qnorm)和随机数生成函数(rnorm)5.通过函数set.seed()显示指定这个种子,让结果可以重现6.函数runif()用来生成0到1区间上服从均匀分布的伪随机数。7.MASS包中的mvrnorm()函数可以获取来自给定均值向量和协方差阵的多元正态分布的数据。 8.字符串处理函数nchar(x)计算x中的最大字符数量substr(x,start,stop)提取或替换一个字符向量中的子串grep(pattern,x,ignore.case=FALSE,fixed=FALSE)在x中搜索某种模式,fixed=FALSE,pattern为正则表达式,若fixed=TRUE,则Pattern为一个文本字符串。返回值为匹配的下标。sub(pattern,replacement,x,ignore.case=FALSE,fixed=FALSE)在x中搜索pattern,并以文本replacement将其替换。strsplit(x,split,fixed=FALSE)在split处分割字符向量x中的元素,paste(...,sep="")连接字符串,连接符septoupper()转换大写tolower小写转换length()对象x的长度seq(from,to,by)生成一个序列rep(x,n)将x重复n次cut(x,n)将连续型变量x分割为有着n个水平的因子,使用选项ordered_result=TRUE以创建一个有序型因子pretty(x,n)创建美观的分割点。cat()连接...中的对象,并将其输出到屏幕上或者文件上 9.R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上:apply(x,MARGIN,FUN,...)x为数据对象,MARGIN为维度,FUN为函数。在矩阵或数据框中,MARGIN=1表示行,MARGIN=2表示列 10.apply()可把函数应用到数组的某个维度上,而lapply()和sapply()则可将函数应用到列表list上。11.options(digits=2)限定了输出小数点后数字的位数12.函数warning()来生成一条错误提示信息,用message()来生成一条诊断信息,用stop()停止当前表达式的执行并提示错误 13整合于重构函数函数t()即可对一个矩阵或数据进行转置aggregate(x,by,FUN)在R中使用一个或多个by变量和一个预先定义好的函数来折叠数据 13.reshape2包melt()数据集的融合dcast()函数读取已融合的数据,并用于整合数据的函数将其重塑。 1.abline()函数用来添加最佳拟合的线性直线2.lowess()函数则用来添加一条平滑曲线3.R有两个平滑曲线拟合函数:lowess()和loess()4.car包中的scatterplot()函数增强了散点图的许多功能。5.pairs()函数可以创建基础的散点图矩阵6.car包中的scatterplotMatrix()函数可以生成散点图矩阵library(car)scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,sprad=FALSE,smoother.args=list(lty=2))线性和平缓(loess)拟合曲线被默认添加,主对角线处添加了核密度曲线和轴须图spread=FALSE表示不添加展示分散度和对称信息的直线smoother.args=list(lty=2)设定平滑(loess)拟合曲线使用虚线而不是实线 7.smoothScatter()函数可利用核密度估计生成用颜色密度来表示分布的散点图。with(mydata,smoothScatter(x,y)) 8.hexbin包中的hexbin()函数将二元变量的封箱放到六边形单元格中library(hexbin)with(mydata,{bin<-hexbin(x,y,xbins=50)plot(bin,main="HexagonalBinningwith10000Observations")}) 9.scatterplot3d包中的scatterplot3d()函数绘制三个定量变量的交互关系scatterplot3d(x,y,z) library(scatterplot3d)attach(mtcars)s3d<-scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="qianjin")fit<-lm(mpg~wt+disp)s3d$plane3d(fit) 10.如何总R中导出一个表,和导入一个表>getwd()[1]"C:/Users/lx/Documents">setwd("C:/Users/lx/Documents")>getwd()[1]"C:/Users/lx/Documents">write.csv(mtcars,"mtcars")//导出>mtcars<-read.csv("mtcars",header=TRUE)//导入,mtcar放到路径上 11.rgl包中的plot3d()函数创建可交互的三维散点图plot3d(x,y,z) 12.car包scatter3d()函数可包含各种回归曲面 基本图形 包library(vcd)1.条形图条形图通过垂直的或水平的条形展示了类别型变量的分布(频数)barplot(height,)height是一个向量或矩阵height矩阵时beside=TRUE分组条形图,beside=FALSE堆砌条形图names.arg允许指定一个字符向量作为条形的标签名 2.table()函数将其表格化 3.棘状图棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段的高度即表示比例spine() 4.饼图面积之比 pie(x,labels) 5.扇形图包library(plotrix)宽度之比fan.plot() 6.直方图直方图表述的是连续型变量的分布直方图通过在x轴上将值域分割为一定数量的组,在y轴上显示响应的频数,展示了连续变量的分布。hist(x)x是一个由数据值组成的数值向量参数freq=FALSE表示根据概率密度,freq=TRUE频数绘制图形breaks用于控制组的数量 7.轴须图(rug 8.盒型box() 9.核密度图核密度估计是用于估计随机变量概率密度函数的一种非参数方法。从总体上将,核密度图不失为一种用来观察连续型变量分布的有效方法。绘制核密度方法:plot(density(x))核密度图可用于比较组间差距使用sm包中的sm.density.compare()函数可向图形叠加两组或更多的核密度图,使用格式:sm.density.compare(x,factor)核密度图的叠加不失为一种在某个结果变量上跨组比较观测的强大方法。箱线图同样是一项用来可视化分布和组间差异的绝佳图形手段polygon()函数根据顶点的x和y轴坐标绘制了多边形 10.箱线图箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(25%)、中位数(50%)、上四分位数(75%)以及最大值,描述了连续型变量的分布。箱线图能够显示出可能为离群点(范围正负1.5*IQR以为的值,IQR表示四分位数,即上四分位数于下四分位数的差值)的观测。boxplot()箱线图可以展示单个变量或分组变量。参数varwidth=TRUE将使箱线图的宽度与其样本大小的平方根成正比参数notch=TRUE,可以得到含凹糟的箱线图 11.小提琴图小提琴图是箱线图与核密度图的结合。vioplot包中的vioplot()函数小提琴图基本上时核密度图以镜像方式在箱线图上的叠加。在图中,白点是中位数,黑色盒型范围是下四分位点到上四分位点,细黑线表示须.外部形状即为核密度估计。 12.点图点图提供了一种在简单水平刻度上绘制大量有标签值得方法dotchart(x,labels=) 13.直方图、箱线图、轴须图以及点图可视化连续型变量分布的方式,使用叠加图的核密度图、并列箱线图和分组点图可视化连续型输出变量组间差异的方法 2017年3月18日 VBA 1.填充 Sub填充()''填充宏''快捷键:Ctrl+q'WithSelection.Interior.Pattern=xlSolid.PatternColorIndex=xlAutomatic.Color=65535.TintAndShade=0.PatternTintAndShade=0EndWithEndSub Sub填充1() Selection.Interior.Pattern=xlSolidSelection.Interior.PatternColorIndex=xlAutomaticSelection.Interior.Color=65535Selection.Interior.TintAndShade=0Selection.Interior.PatternTintAndShade=0 EndSub 保存有VBA的代码的Excel文件是xlsm格式,否则无法保存代码 Sub偏移() ActiveCell.Offset(0,-1)="洪前进"WithActiveCell.Offset(0,-1).Font.Size=30EndWithEndSub Sub消息框()MsgBoxprompt:="前进",Buttons:=vbYesNo,Title:="qianjin"EndSub Sub消息框()'MsgBoxprompt:="前进",Buttons:=vbYesNo,Title:="qianjin" MsgBox"学习VBA",vbOKOnly,"数据挖掘"EndSub 6.psych包也拥有一个名为describe()的函数,它可以计算非缺失值的数量、平均值、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值得标准误 7.aggregate()仅允许在每次调用中使用平均数、标准差这样的单返回值函数,它无法一次仅返回若干个统计量。 8.doBy包和psych包提供了分组计算描述性统计量的函数。doBy包中summaryBy()函数的使用格式为:summaryBy(formula,data=dataframe,FUN=function) 9.使用于创建和处理列链表的函数table(var1,var2,var3,...,varN)使用N个类别型变量(因子)创建一个N维列联表xtabs(formula,data)依据一个公式和一个矩阵或数据框创建一个N维列联表prop.table(table,margins)依margins定义的边际列表将表中条目表示为分数形式margin.table(table,margins)依margins定义的边际列表计算表中条目的和addmargins(table,margins)将概述边margins(默认是求和结果)放入表中ftable(table)创建一个紧凑的“平铺”式列联表 10.table()函数生成简单的频数统计表prop.table()将频数转化为比例值(prop.table()*100转化为百分比) 11.使用gmodels包中的CrossTable()函数是创建二维列联表 12.ftable()函数可以输出多维列联表 13.R提供了多种检验类别型变量独立性的方法,卡方独立性检验、Fisher精确性检验、Cochran-Mantel-Haenszel检验 14.卡方独立性检验使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验p的值表示从总体中抽取的样本行变量与列变量是相互独立的概率。 15.Fisher精确检验使用fisher.test()函数进行Fisher精确检验。Fisher精确检验的原假设:边界固定的列联表中行和列是相互独立的。使用格式是:fisher.test(mytable)其中mytable是一个任意行数大于等于2的二维列联表 16.Cochran-Mantel-Haenszel检验mantelhaen.test()函数可用来进行Cochran-Mantel-Haenszel卡方检验,其原假设是,两个名义变量在第三个变量的每一层中都是条件独立的。 17.vcd包中的assocstats()函数可以用来计算二维列联表的phi系数、列联系数和Cramer‘sV系数 18.显著性检验评估了是否存在充分的证据以拒绝变量间相互独立的原假设。 25.独立样本的t检验一个针对两组的独立性样本t检验可以用于检验两个总体的均值相等的假设。这里假设两组数据是独立的,并且是从正态总体中抽得。检验的调用格式为:t.test(y~x,data) 26.非独立样本的t检验前-后测试设计或重复测量设计同样会产生非独立的组非独立样本的t检验假定组间的差异呈正态分布 27.如果能够假设数据是从正态总体中独立抽样而得的,那么可以使用方差分析(ANOVA) 28.组间差异的非参数检验1.如果数据无法满足t检验或ANOVA的参数假设,可以转而使用非参数方法。2.若两组数据独立,可以使用Wilcoxon秩和检验(Mann-WhitneyU检验)来评估观测是否是从相同的概率分布中抽得(即,在一个总体中获得更高得分的概率是否比另一个总体要大)。调用的格式为:wilcox.test(y~x,data) 29.Wilcoxon符号秩检验是非独立样本t检验的一种非参数代替方法。它使用于两组成对数据和无法保证正态性假设的情境。 30.多余两组的比较如果无法满足ANOVA设计的假设,那么可以使用非参数方法来评估组间的差异。如果各组独立,则Kruskal-Wallis检验将是一种使用的方法。如果各组不独立(如重复测量设计或随机区组设计),那么Friedman检验更合适;Kruskal-Wallis检验的调用格式为:kruskal.test(y~A,data)Friedman检验的调用格式为:friedman.test(y~A|B,mdata) 2017年3月28日 1.OLS(最小二乘)回归是通过预测变量的加权和来预测量化的因变量,其中权重是通过数据估计而得到的参数。2.在R中,拟合线性模型最基本的函数就是lm(),格式是:myfit<-lm(formula,data) 6.对拟合线性模型非常有用的函数summary()展示拟合模型的详细结果coefficients()列出拟合模型的模型参数(截距项和斜率)confint()提供模型参数的执行区间(默认95%)fitted()列出拟合模型的预测值residuals()列出拟合模型的残差值anova()生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表vcov()列出模型参数的协方差矩阵AIC()输出赤池信息统计量plot()生成评价拟合模型的诊断图predict()用拟合模型对新的数据集预测响应变量值 7.非线性模型可用nls()模型进行拟合 8.car包中的scatterplot()函数可以绘制二元关系图 >states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])>View(states)>library(car)>cor(state)MurderPopulationIlliteracyIncomeFrostMurder1.00000000.34364280.7029752-0.2300776-0.5388834Population0.34364281.00000000.10762240.2082276-0.3321525Illiteracy0.70297520.10762241.0000000-0.4370752-0.6719470Income-0.23007760.2082276-0.43707521.00000000.2262822Frost-0.5388834-0.3321525-0.67194700.22628221.0000000>scatterplotMatrix(states,spread=FALSE,smoother.args=list(lty=2),main="SactterPlotMatrix")>windows()>scatterplotMatrix(states,spread=FALSE,smoother.args=list(lty=2),main="SactterPlotMatrix") 10.通过effects包中的effect()函数,可以用图形展示交互项的结果,格式为:plot(effect(term,mod,,xlevels),multiline=TRUE)term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline=TRUE选项表示添加相应直线>library(effects)>windows()>plot(effect("hp:wt",fit,,list(wt=c(2.2,3.2,4.2))),multiline=TRUE) 14.线性通过成分残差图也称偏残差图,可以看看因变量与自变量之间是否呈线性关系,也可以看是否有不同于已设定线性模型的系统偏差,图形可用car包中的crPlots()函数绘制 15.同方差性car包提供了两个有用的函数,可以判断误差方差是否恒定。ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值得关系。 16.gvlma包中的gvlm()函数能对线性模型假设进行综合验证,同时还能做偏斜度、峰度和异方差性的评价。也就是它给模型假设提供了一个单独的综合检验(通过/不通过) 17.多重共线性可用统计量(VIF,方差膨胀因子)进行检测.VIF的平方根表示变量回归参数的置信区间能膨胀为与模型无关的预测变量的程度。car包中的vif()函数提供VIF值,一般原则下,根号vif>2就表明存在多重共线性问题 18.高杠杆值点高杠杆值观测点,即与其他预测变量有关的离群点。也就是说,它们是由许多异常的预测变量值组合起来的,与响应变量值没有关系。高杠杆值的观测点通过帽子统计量判断高杠杆值点可能是强影响点,也可能不是,这要看它们是否是离群点。 19.强影响点强影响点,即对模型参数估计值有些比例失衡的点。有两种方法可以检测强影响点:Cook距离,或称D统计量,以及变量添加图,一般来说,Cook'sD值大于4/(n-k-1),则表明它是强影响点,其中n为样本量大小,k是预测变量数目 20.有四种方法可以处理违背回归假设的问题:(1)删除观测点(2)变量变换(3)添加或删除变量(4)使用其他回归方法 21.变量变换car包中的powerTransform()函数通过r(参数那么la)的最大似然估计来正态化变量XN(x的N次方)car包中的boxTidwell()函数通过获得预测变量幂数的最大似然估计来改善线性关系。 22.anova()函数可以比较两个嵌套模型的拟合优度 23.AIC赤池信息准侧AIC也可用来比较模型,它考虑了模型的统计拟合度以及用来拟合的参数数目,AIC值较小的模型要优先选择,它说明模型用较少的参数获得了足够的拟合度,用AIC()函数实现 24.从大量候选变量中选择最终的预测变量有两种流行的方法:逐步回归法和全子集回归逐步回归法中,模型会一次添加或者删除一个变量,直到达到某个判停准侧为准。MASS包中的stepAIC()函数可以实现逐步回归模型,依据的是精确AIC准侧全子集回归是指所有可能的模型都会被检测。全子集回归可用leaps包中的regsubsets()函数实现。 25.bootstrap包中的crossval()函数可以实现k重交叉验证 5.卡方检验卡方检验常常用来评价两个类别型变量的关系。典型的零假设是变量之间独立,备择假设是不独立。pwr.chisq.test()函数可以用来评估卡方检验的功效、效应值和所需的样本大小。 2017年3月30日 #-*-coding:utf-8-*-"""CreatedonThuMar3009:30:252017 @author:Administrator""" #第一天a=5b=4 #用两个新变量交换值a_backup=ab_backup=ba=b_backupb=a_backup #用一个新变量交换值a_backup=aa=bb=a_backup #不用新变量交换值a=a+bb=a-ba=a-b #字符串s1='我是字符串's2="我也是字符串"s3='''我也是字符串'''#为啥要搞这么多种引号"i'm21"'''i'm"abc"21'''#还可以加\'i\'m21' #数值常量1#整型1.0#浮点型complex(1,2)#复数 a_234234='我是变量'#1_aaaa=1#数字在前面,这个会报错#变量大小写敏感,a和A是两个不一样的变量a=1A=2#变量名不可以是Python内置关键字,如min、max、range等; #类型转换num=1234s_num=str(num)#int('a')int('123')float(num)int(1.234)#警惕,这个会损失精度str(complex(1,3)) #算术运算符:3+5.6#内部会先把整数转换成小数再相加7-13*3.145/311//411%42**3 #关系运算符a=7b=6a>ba #布尔算符TrueFalse #逻辑运算符:TrueandTrueTrueandFalseTrueorFalsenotTrue 1and3#挑那个大的1and0#0 #list列表l=[1,"aaa"]#c(1,2,3)在这里叫列表,可以放不同的类型l2=[1,2,3,4,5,100,80,60,1,1,2]l2[0]l2[0:3]l2[4]len(l2)#len返回数组的长度l2[len(l2)-1]#取出最后一个元素l2[-1]#可以省略len(l2),写成这样l2[0]=100#list是可变的L2=list(range(1,101,2)) l2[::-1]#倒序取里边的元素l2[-4:]#取最后四个元素是l2[len(Mylist)-4:len(Mylist)]的简写l2[:]#取出全部的元素 #[:]取全部值跟直接l2的区别a=l2a[0]=100b=l2[:]b[1]=1000#列表方法l2.append(1111)#增加一个元素l2.insert(2,22222)#在第二个位置插入22222l3=[9,8,7]l2.extend(l3)#每次可以在列表的末尾增加多个元素last_one=l2.pop()l2.remove(3)#删除某一个元素l2.clear()#全部删除l2.sort()#排序l2.reverse()l2.index(100)l2.count(1)l3=l2.copy()#值不会跟着l2变化,和[:]一样l2[0]=1000000height=[172,165,188,170,168,177,174]weight=[66.2,60,75.3,80,55,65,67.8]#height/weight#报错,不能做向量化运算要做的话需要numpy模块importnumpyasnpHeight=np.array(height)Weight=np.array(weight)BIM=Weight/(Height/100)**2 #tuple元组t1=(1,2,3,1,1,1)t2=1,#当创建的元组只有一个元素时,必须在元素后面加上逗号;t3=t1+t2#可通过+完成多个元组之间的连接t1[0]t1[-1]t1[0]=100#会报错,元组不可变T2=tuple(range(1,6))#用函数创建元组。。T3=('My','name','is','Sim')t1.count(1)t1[(t1.index(1)+1):].index(1)+(t1.index(1)+1)#返回第二个1所在的位置t2l=list(t1)#元组变成list,便于增,删,改 #dict字典d1={"key1":[1,2,3,4],"key2":2}#如果键相同,会被覆盖d1={"key1":1,"key1":2}d1['key1']#用键获取值d1.keys()#取出全部的键d1.values()#取出全部的值#字典并不是序列,其元素并不是有序排放的,位置并不重要。#不能用下标去索引#d1[1]报错dict1={'name':'Sim'}dict2={'name':'Sim','gender':'Male','age':27,'address':'Jiangsu'}dict3={'name':'Bob','score':[67,90,72]}dict4={'name':['Sim','BaiSheng'],'score':[84,87]}dict5={'name':{'fstname':'Liu','lstname':'Sim'},'job':['teacher','dataminer']} dict2['address']dict4['name'][1]dict5['name']['fstname']#字典虽不是一个序列,但却是一个非常灵活的数据结构,可以进行增、删、改和查的操作!deldict2['name']score=dict3.pop('score')#clear只是把dict2里面的值删除。还能有个{}剩下而del删除,变量名都可以删除dict2.clear()deldict1#增加一个值,通过给新键赋值:dict1['height']=167;#把dict3的内容copy到dict2里面,重复的键值会排重用的是dict3值!dict2.update(dict3)#通过列表方法增加列表类型的值dict3['score'].append(85)#单个dict3['score'].extend([67,89])#多个#改dict1['name']='Snake'dict3['score'][0]=77dict4['name']=['Snake','Peter']#字典方法newdict=dict1.copy()dict1['asdfadsf']#会报错dict1.get('name')dict1.get('asdf')#不会报错dict1.setdefault("0")#items()列表的形式返回可遍历的(键,值)元组数组foraindict1.items():print(a)dict1.keys()dict1.values()#把键值成对的POP出来,返回的是元组类型dict1.popitem() #字典与列表的比较#当数据集非常大的时候,通过字典的方式查找数据会比列表快很多!l1=['Sim','Male',27,'Jiangsu']print("%s'sageis%d!"%(l1[0],l1[2]))print("%s'sageis%d!"%(l1[l1.index('Sim')],l1[l1.index(27)]))#用dict()方式创建字典dict1=dict(name='Sim',gender='M',age=27,address='JiangSu')print("%s'sageis%d!"%(dict1['name'],dict1['age'])) #print是一个输出函数print(dict1)#print("%sis%d"%("Sim",27))print("%sis%d"%(dict2['name'],dict2['age']))dict5['name']['lstname']='Snake' #控制流和自定义函数#if分支语句ifTrue:print('true') #保存输入数据a_num=input("pleaseinputavalue:")#单个分支ifint(a_num)<100:print("lessthan100")#两个分支ifint(a_num)<100:print("lessthan100")else:print("morethan100") #多个分支a_num=input("pleaseinputascore:")ifint(a_num)>90:print("好")elif(int(a_num)>80):print("良")elif(int(a_num)>60):print("及格")else:print("SB") #循环i=0sum_i=0while(i<100):i=i+1#i+=1sum_i=sum_i+i#sum_i+=iprint("第%d次循环,sum_i=%d"%(i,sum_i))#循环#有一个初始值为5,公差为3的等差数列,计算前100项的和i=0sum_i=0a=5while(i<100):i=i+1#通项sum_i=sum_i+aprint("第%d次循环,a=%dsum=%d"%(i,a,sum_i))a=a+3 #100以内的偶数,奇数全部相加,i=0sum_au=0sum_ji=0while(i<100):i=i+1#i+=1if(i%2==0):sum_au=sum_au+ielse:sum_ji=sum_ji+iprint(sum_au,sum_ji) 2017年4月1日 #-*-coding:utf-8-*-"""CreatedonFriMar3110:24:202017 @author:Administrator"""##找出,100以内所有的素数。。#素数:只能除尽1和它本身的数、#先判断一个数是不是素数i=2l=list()while(i<100):j=2is_sushu=Truewhile(j #for循环的语法foriinrange(5,10):print(i)list1=[0,11,22,33,44,55,66,77,88,99]foriinlist1:print(i) string1="helloworld"foriinstring1:print(i) #建议使用的方式,即可以得到索引,也可以有值list1=[0,11,22,33,44,55,66,77,88,99]foriinrange(len(list1)):print(i,list1[i]) #for循环一个字典dict1={'name':'jack','gender':'man','age':30}dict1.items()forkey,valueindict1.items():print(key,"----->",value) #这次用for循环#找出,100以内所有的素数。。#素数:只能除尽1和它本身的数、#先判断一个数是不是素数i=18is_sushu=Trueforjinrange(2,i):ifi%j==0:is_sushu=False #然后判断2到100所有的数是不是素数l=list()foriinrange(2,100):is_sushu=Trueforjinrange(2,i):ifi%j==0:is_sushu=Falseif(is_sushu):l.append(i) #自定义函数deff():print("iamafunction") #参数(必选参数)和返回值defme_add_me(a):returna+a #参数(可选参数),可选参数一定要在必选参数后面defa_add_b(a,b=1):returna+b #定义一个函数,判断一个数是不是素数defis_sushu(num):is_sushu=Trueforiinrange(2,num):if(num%i==0):is_sushu=Falsereturnis_sushu#找100以内的素数foriinrange(2,100):if(is_sushu(i)):print(i)#一个*号,可变参数,调用时传多个参数,#它会变成元组传进去,可以用for循环遍历deff(*a):foriina:print(i)f(1,2,3,4,5) #两个*号,关键词参数deff(**a):fork,vina.items():print(k,"---------->>",v)#三个循环练习#题目1,输出前100个这样的数##规律为数列1,1,2,3,5,8,13,21....l=[1,1]foriinrange(2,100):l.append(l[-1]+l[-2])#题目2:求1+2!+3!+...+20!的和#先搞出来一个数的阶乘defjie_cheng(a):jie_c=1foriinrange(a):jie_c=jie_c*(i+1)returnjie_c#现在计算前20项的和sum_jiec=0foriinrange(20):sum_jiec=sum_jiec+jie_cheng(i+1)print(sum_jiec) #题目3:有一分数序列:#2/1,3/2,5/3,8/5,13/8,21/13...#求出这个数列的前20项之和。#1.程序分析:请抓住分子与分母的变化规律。fenzi=[2,3]fenmu=[1,2]sum=2/1+3/2foriinrange(2,20):fenzi.append(fenzi[-1]+fenzi[-2])fenmu.append(fenmu[-1]+fenmu[-2])sum=sum+fenzi[i]/fenmu[i]#sum=sum+fenzi[-1]/fenmu[-1] #读取数据importpandasaspddata0=pd.read_table(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data0.txt")#以逗号做分隔的数据加sep=','参数。。#文件中有中文的时候,要改成UTF-8保存后再读进来data1=pd.read_table(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data1.txt",sep=',')#读取没有表头的数据data2=pd.read_table(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data2.txt",sep='',header=None)#读取没有表头的数据,表头换个名data2=pd.read_table(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data2.txt",sep='',header=None,prefix="XX") data3=pd.read_csv(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data3.csv") data4=pd.read_table(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\comment$.txt",comment='$') data4=pd.read_excel(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data4.xls")#data4有10000行,太多了,用head()方法看前5行数据data4.head()data5=pd.read_excel(r"E:\BaiduNetdiskDownload\上课资料\CH12-Python爬虫\CH12-Python爬虫\Python\CH5-数据读取\data5.xlsx") #Python常用的数值函数—内建函数:abs(-4)#取绝对值divmod(10,4)#商和余数pow(2,3)#乘方,相当于2**3round(4.51)#四舍五入,大于0.5才会入 #math包里的函数frommathimport*pieceil(4.1)#向上取整floor(4.999)#向下取整modf(5.888)#把小数和整数分割fabs(4)exp(2)#e的2次方log(7.38905609893065)log2(4)log10(100)sqrt(100)pow(2,3)fmod(10,3)factorial(5) #认识字符串#字符串的创建;s1="hello"s2="world"s1+s2#字符串拼接s1*8#字符串重复s1[0:3]#子字符串的获 \0\d{2}\[-]\d{8}|0\d{2}[-]\d{8} #正则表达式importrere.findall("a.c","abcaccafcagc") #-*-coding:utf-8-*-"""CreatedonSatApr111:22:452017 @author:Administrator"""#python如何链接数据库importMySQLdbconn=MySQLdb.connect(db='testdb',host='localhost',user='root',passwd='123456') cur=conn.cursor()cur.execute('select*fromstu;')mydata=cur.fetchall() foriinmydata:print(i[1]) #Python的字符串方法s1="helloworld"S1=s1.capitalize()ST=s1.title()s1.count('l')s1.endswith("ld")s1.startswith("hell")s1.index('or')s1.find('or')'aa123aa'.isalnum()'aa'.isalpha()'11'.isnumeric()"aa".upper()"Aa".lower()"aa".islower()"AA".isupper()"AaBBBBbbbb".swapcase()s1.replace("world","小明")"thisisastring".split("")",".join(['this','is','a','string']) 爬虫图片python 2017年4月5日 2017年4月6日 2017年4月7日 (1)TEXT(value,format_text)根据指定格式将数字转成文本 (2)TODAY()返回日期格式的当前日期 (1)HYPERLINK()创建一个快捷方式或链接,以便打开一个存储在硬盘,网络服务器或Internet上的文档 (2)MATCH()返回符合特定值,特定顺序的项在数组中的相对位置 3. (1)MOD()返回两数相除的余数 (2)MID(text,start_num,num_chars)从文本字符串中指定的起始位置起返回指定长度的字符 (1)EDATE(start_date,months)返回一串日期,指示起始之前之后的月数 6. 7. (1)SEARCH(find_text,within_text,[start_num]):返回一个指定字符或文本字符串在字符串第一次出现的位置,从左到右查找(忽略大小写) (2)SMALL(array,k):返回数组中第k个最小值 (3)IFERROR(value,value_if_error):如果表达式是一个错误,则返回value_if_error,否则返回表达式自身的值 (4)INDEX(arrary,row_num,[column_num])、INDEX(reference,row_num,[column_num],[area_num]):在给定的单元格区域中,返回特定行列交叉单元格的值或引用 (5)ISNUMBER(value):检测一个值是否是数值,返回TRUE或FALSE 2017年4月8日 (1)MATCH(look_value,look_array,[match_type]):返回符合特定值特定顺序的项在数值中相对位置 (2)VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup]):搜索表区域首列满足条件的元素,确定待检索单元格在区域中的行序号,再进一步返回选定单元格的值。默认是以升序排序的。 2017年4月9日 1.Dir函数 语法:Dir[(pathname[,attributes])]两个参数都是可选的,attributes表示文件属性。功能:返回一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 说明:在第一次调用Dir函数时,必须指定pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括pathname。 2.ByVal表示该参数按值传递。ByRef表示该参数按地址传递。ByRef是VisualBasic的缺省选项。 3.COUNT(value1,[value2]...):计算区域中包含数字的单元格的个数 COUNTA(value1,[value2],...):计算区域中非空单元格的个数 COUNTBLANK(range):计算某个区域中空单元格的数目 COUNTIF(range,criteria):计算某个区域中满足给定单元格数目 COUNTIFS(criteria_range1,criteria1,...):统计一组给定条件所指定的单元格数 2017年4月11日 (1)自定义单元格格式";;;",会使单元格显示为空白,但编辑栏仍会显示实际内容 (2)IFERROR(value,value_if_error):如果表达式是一个错误,则返回value_if_error,否则返回表达式自身的值 (3)DATEDIF()返回两个日期的相差值 2017年4月12日 REPLACE(old_text,start_num,num_chars,new_text):将一个字符串中的部分字符用另一个字符串替换 REPLACEB(old_text,start_num,num_chars,new_text):用其他文本字符串替换某文本字符串的一部分 INDIRECT(ref_text,[a1]):返回文本字符串所指定的引用 CHOOSE(index_num,value1,[value2]):根据给定的索引值,从参数中选出响应的值或操作 SUBSTITUTE(text,old_text,new_text,[instance_num]):将字符串的部分字符串以新字符串替换 2017年4月13日 SUMPRODUCT(array1,[array2],[array3],...):返回响应的数组或区域乘积的和 ISNUMBER(value):检测一个值是否是数值,返回TRUE或FALSE T(value):检测给定值是否为文本,如果是文本按原样返回,如果不是,则返回双引号(空文本) RANDBETWEEN(bottom,top):返回一个介于指定的数字之间的随机数 ROUND(number,num_digits):按指定的位数对数值进行四舍五入