用R做数据分析.docx

上传人:b****5 文档编号:8634453 上传时间:2023-02-01 格式:DOCX 页数:22 大小:334.69KB
下载 相关 举报
用R做数据分析.docx_第1页
第1页 / 共22页
用R做数据分析.docx_第2页
第2页 / 共22页
用R做数据分析.docx_第3页
第3页 / 共22页
用R做数据分析.docx_第4页
第4页 / 共22页
用R做数据分析.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

用R做数据分析.docx

《用R做数据分析.docx》由会员分享,可在线阅读,更多相关《用R做数据分析.docx(22页珍藏版)》请在冰豆网上搜索。

用R做数据分析.docx

用R做数据分析

R简介

R语言是由RossIhaka、RobertGentleman二位创建的,这也许可以解释为什么叫R语言。

现在由“R开发核心团队”负责开发。

R是基于S语言的一个GNU项目。

一、R语言介绍

R是为统计计算和作图的一门语言和环境。

是一个GNU项目,和S语言和环境很相似,S语言是由BELL实验室的JohnChambers和他的同事开发的。

R语言可以认为是从S语言衍生而来的,他们之前有很重要的不同,但是大多数用S语言写的代码也可以在R中运行。

目前R在高校非常流行,特别是随着这几年互联网的发展,(R在一些大公司的运用得到的实践,例如:

国外的google、linkdin、facebook等,国内一些大型互联网公司也在开始使用R),及随着互联网版权的意识增强,也促使了R在互联网的发展。

当然R在很多领域都有很广泛的运用。

R语言是开源的,同时可以运行在各种平台上(Linux、Windows、MacOS等)。

R的许多软件包是由R语言、LaTeX、Java及最常用C语言和Fortran撰写。

可以说现在R包含各种各样的功能,可以说目前你能想到的功能,都可以找到一个或者多个R包来实现。

几千个R包,哪个才最适合你呢?

“最适合你自己的R包,也许就是你自己写的那个包”。

二、R软件安装下载

CRAN地址:

,什么是CRAN:

CRAN为ComprehensiveRArchiveNetwork(R综合典藏网)的简称。

它除了收藏了R的执行档下载版、源代码和说明文件,也收录了各种用户撰写的软件包。

现时,全球有超过一百个CRAN镜像站。

根据你的操作系统,下载相应的R语言安装文件。

下载地址:

三、R语言的特点

1、变量不需要申明即可引用。

2、R语言的核心是:

向量。

3、R语言是一个函数语言。

4、向量中的下标是从1开始引用的。

5、R是脚本语言、面像对象;

四、如何学学习R语言

1、不要期望你能学会R中所有的包。

不要把目标定的那么高。

2、关键能理解R语言的内涵。

多看看CRAN上的相关文档,例如:

季刊、R语言相关新闻,特别是每次版本更新的一些内容。

3、运用

如果你是做数据分析相关的工作的,一定要把学习到的R语言知识运用到你的工作中,不管你把R语言当用一门编程语言还是统计工具,用的多了,自然你就有感觉,很多东西你就记住了。

4、持续

每天花点时间写几条R代码,实现一些小功能。

如果你工作上就用R,那是最完美的。

5、多看

多看别人写的代码,R运用的案例。

你可以google一下R会有很多好的博客,文章。

很多人都是R的GREEK。

6、开放

一定要开放、分享的心态。

多与别人交流,不要总是需求,一定要学习给予。

7、总结

学到的东西,及时做好总结,可以总结成案例或者笔记,如果可以欢迎分享给大家(到这投稿是一个不错的选择)

五、我对R语言的理解和看法

随时互联网的发展,特别是互联网对于版权、成本的因素考虑,因为免费、开源使越来越多的公司开始用R语言来处理数据、分析数据、完成模型等,当然这其中也伴随着对于数据价值挖掘的,特别是在大数据的背景下,想通过对数据挖掘&分析建立自己的竞争优势。

R不仅免费还有各种各样的的功能包资源。

从某种程度上讲,任何你想要的功能应该都可以找到对应的包,只是说是否完全满足,对于一些算法研究人员来说,可以在原来的代码的基础进行借鉴。

这也许就是为什么R最开始主要用到高校或者学术领域(当然和国外学者、专家这种自由、开放的环境或者意识有很关系,这也许就是为什么许多开源软件都是国外出来,很少看到国内的大公司有什么好的东西开源)。

很多行业人士都说R是未来的“王道”,就像unix的发展过程一样。

我觉得未来一定有属于R的一片天空,而且这种天空可以说是接近无限。

所以,对于有志于从事数据挖掘、数据分析这个行业的朋友来说,掌握R是也许会成为未来的必备技能(就像现在数据分析师大多要求会:

SQL)。

最后,我对R语言的理解与总结可以概括为一句话:

“开源、二次加工、分享精神”。

R包介绍

R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求

一、R语言包的安装

1、通过选择菜单:

程序包->安装程序包->在弹出的对话框中,选择你要安装的包,然后确定。

2、使用命令

install.packages("package_name","dir")

package_name:

是指定要安装的包名,请注意大小写。

dir:

包安装的路径。

默认情况下是安装在..\library文件夹中的。

可以通过本参数来进行修改,来选择安装的文件夹。

例如:

mvtnorm安装到D:

/DM/r/R-2.15.2/library/目标下install.packages("mvtnorm","D:

/DM/r/R-2.15.2/library/")

3、本地来安装

如果你已经下载的相应的包的压缩文件,则可以在本地来进行安装。

请注意在windows、unix、macOS操作系统下安装文件的后缀名是不一样的:

1)linux环境编译运行:

tar.gz文件

2)windows环境编译运行:

.zip文件

3)MacOSg环境编译运行:

.tgz文件

注:

包安装好后,并不可以直接使用,如果在使用包中相关的函数,必须每次使用前包加载到内存中。

通过library(package_name)来完成。

二、加载包

包安装后,如果要使用包的功能。

必须先把包加载到内存中(默认情况下,R启动后默认加载基本包),加载包命令:

Library(“包名”)

Require(“包名”)

三、查看包的相关信息

1、查看包帮忙

library(help=package_name)

主要内容包括:

例如:

包名、作者、版本、更新时间、功能描述、开源协议、存储位置、主要的函数,例如:

library(help=igraph)

2、查看当前环境哪些包加载

find.package()或者 .path.package()

例如:

默认情况下安装7个包(本系列文章使用的R的版:

2.15.2)

3、移除包出内存

detach()

4、把其它包的数据加载到内存中

data(dsname,package="pkgname")

5、查看这个包里的包有数据

data(package="包名")

6、列出所有安装的包

library()

四、R包的分类

1、根据包的功能,分成不同的类:

 

2、截止到2013年3月6号,CRAN上一共收录的:

4338个包。

3、不同开源协议的包的分布如下:

(相关查看代码:

#读取CRAN上包的相关信息

a<-available.packages(contrib.url("","source"))

#查看CRAN上当前包的个数

nrow(a)

#各种开源协议的包的分布个数

sort(table(gsub(".*","",a[,"License"])), decreasing=T)

R软件初识数据分析

R软件下载地址:

1.用来制作散点图非常便捷。

plot(纵坐标变量~横坐标变量,data=数据集名称)

library(lattice)

xyplot(纵坐标变量~横坐标变量|属性拥有者,data=数据集名称)。

多个散点图。

2.数据存储成CSV格式的会更容易处理

3.R能用正则表达式来处理数据模式!

NewName<- sub(" \\(.* \\)","",Test$Name)

\\( 表示左括号,告诉R这不是R表达式

. 句点表示任何字符

*星号表示任何数值的前字符

\\)表示右括号

4.读写文件语句

INPUT<-read.csv("  .csv",header=TRUE) 读取一个.csv格式的文件

head(INPUT,n=?

)     查看开头数据中开头?

write.csv(INPUT,file="OUTPUT.csv") 将结果写入到csv格式的文件

5.R区分大小写,连TRUE都不能用小写.

向量

在本系列文章中,接下将分别介绍R语言的几种数据对象:

向量、矩阵、数据框与列表、其它特殊对象;

请大家在学习R语言的时候永远记住一个概念,R语言所有内容都是对象;

一、向量基本概念

R语言中最为核心的构成之一

1、向量构成的基本元素为:

数值(numeric)、字符(character)、逻辑值(logical)、复数型(complex);

2、向量不需要定义类型,可直接赋值:

1)生成一个空向量;x<-c();

2)给向量赋值。

x<-c(0,1,2,3);

3、向量的元素下标取值是以1开始,这点请刚开始接触R的同学注意。

例如:

要前例中取x向量中值为1,则为x[2]

4、如果一个向量中有一个字符,则该向量的类型会变成字符;

如果逻辑变量与数值在一起,则为转换成数值。

TRUE转变成1andFALSE转变成0.

2、在R语言中没有单一的整数、单一字符的概念

例如:

X<-2;X<-'a';R都是当作向量来处理,只是这个向量只包括单一值。

3、给向量各元素命名:

names(x)

Demo_3<-1:

3

names(Demo_3)<-c("a","b","ab")

二、几种特殊向量的生成

1、生成系列seq()

1)seq(length=,from=,to=)

Length:

指定生成个数

From:

是指开始生成的点

To:

截止点

2)如果不指定,则默认条件下:

seq(N1,N2,BY=)

N1:

开始位置

N2:

截止位置

BY=指定间隔

2、rep(P,N)重复生成P值N次

三、向量运算

1、取子向量

通过下标:

取某个元素:

x[2];(如果X包括名称,注意:

x[2]与x[[2]]的区别;

取某中几个:

x[c(1,2,0)]

取某个/几个元素,利用-:

x[-n]

2、向量排序;

sort();输出排序后的结果;

order();输出排序后的各个向量位置;

a<-c(3,9,0,12,19)

sort(a);order();

3、循环。

如果二个向量进行运算过程中,二个向量不相同,则R对长度小的向量自动补充值,直到长度等于大的向量。

例如:

Demo_5<-1:

3;

Demo_6<-2:

5;

Demo_7=Demo_6+Demo_5;

Demo_5<-1:

3;

Demo_6<-2:

7;

Demo_7=Demo_6+Demo_5;

(这也是很多人学习R语言的时候很难理解的地方,为什么会有这种机制)

vectorizedoperation(向量化运算)

1)、如果有一个是向量,是则结果都是向量形式;

2)、进行向量运算;判断向量是否长度相等,如果长度不相等,则把短向量长度从头开始循环补充值,到与长向量的长度相等(所以二个长度的相关必须是整数倍);

矩阵

矩阵的创建

在R中用函数matrix()来创建一个矩阵,使用该函数时需要输入必要的参数值。

matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)

1.   data向量元素列表

2.   nrow行数

3.   ncol列数

4.   byrow矩阵是按列优先的方式进行排序,先列后行。

byrow项控制排列元素时优先级按行。

例如:

1) matrix(c(1,2,3,4,5,6),nrow=2,byrow=T)

5.   Dimnames(Row_name,Col_name)给定行和列的名称,如果不需要给行或者列命名,则以NULL代替。

例如:

给下面的矩阵列命令

2)Demo_1<-matrix(rnorm(15)*10,5,3,dimnames=list(NULL,c('A','B','C')))

矩阵的运算

1、R矩阵查看矩阵的列/行相关信息

#查看矩阵列名colnames(Demo_1)

#查看矩阵行名rownames(Demo_1)

#给矩阵的行命名rownames(Demo_1)<-c('r1','r2','r3','r4','r5')

#矩阵的维度 dim(Demo_1)

#返回与矩阵相同的列与行 row()/col()函数将返回一个与某矩阵有相同维数的矩阵

#返回矩阵行数与列数nrow()返回行数

ncol()返回列数

2、R的子矩阵

#取矩阵中某个元素值,第二行第三列的值:

 Demo_1[2,3]

#取矩阵中的某列,取矩阵的第一列 Demo_1[,1]

#取矩阵中的某行,取矩阵的第一行 Demo_1[1,]

#取某列大于某个值,取第二列大于3  Demo_1[Demo_1[,2]>3,]

3、R矩阵的基本运算

#矩阵加&减

Demo_2=Demo_3=matrix(1:

20,nrow=5,ncol=4)

#矩阵相乘

Demo_4=matrix(1:

20,nrow=4,ncol=5)

Demo_5=matrix(1:

20,nrow=5,ncol=4)

Demo_4%*%Demo_5

4、增加行与列

Demo_6<-matrix(,4,2)

Demo_6[c(1,3),]<-matrix(c(1,2,3,4))

Demo_6

5、R矩阵的转置

t(Demo_1)

6、矩阵其它运算

#取对角元素diag()

#各行汇总值rowSums()

#各行的平均值rowMeans()

#各位的汇总值colSums()

#各列的平均值colMeans()

数据框

前面几篇文章对R语言、R包以及R向量与矩阵等对象做了简单介绍,本篇继续介绍R数据框的相关内容。

数据框的创建

通过data.frame函数来创建数据框,该函数包含的主要参数为:

data.frame(...,row.names=NULL,check.rows=FALSE,check.names=TRUE,

stringsAsFactors=default.stringsAsFactors())

创建一个数据框

Demo_1<-data.frame(name=c('lucy','alice','lei'),

heigh=c(178,156,188),

sex=c('F','F','M'),

score=c(200,210,198))

#包括一个缺少值的数据框

Demo_2<-data.frame(name=c('lucy','alice','lei'),

heigh=c(178,156,188),

sex=c('F','F',NA),

score=c(200,210,198),

stringsAsFactors=F)

默认情况下,name与sex都是factor类型,如果要将某转化成字符类型,则使用选项:

stringsAsFactors=F

数据框特别点

1、可以包含不同类型的变量;而在矩阵中只能是同一种类型,例如:

不能出现字符与数值二种类型;所以可以把数据框理解为各列可为不同类型的向量组合。

2、各列的长度要求一致。

如果长度不一,则会报错。

例如:

3、如果你对数据库比较熟悉,你可以把数据框理解为数据库中的表。

数据框基本操作

1、查看数据框信息

#查看类型  class(Demo_1)

#查看某列的类型  class(Demo_1$sex)

#查看数据框长度  length(Demo_1)

#数据框各项名称  names(Demo_1)

#数据框信息总结,对字符类/因子类数据,给出相应的频数统计;给数值型数据给出5个主要的指标。

summary(Demo_1)

#对数据框进行去重

unique(Demo_1)

#取数据框中重复的行  Demo_1[duplicated(Demo_1),]

2、取数据框中的某个元素

Demo_1[i,j]指第i行第j列的数据;

3、取数据框中一列与多列

#取某列,可以通过列标或者名称

Demo_1$sex

Demo_1[,3]

#取多行,例如取1,2,4列

Demo_1[,-3]

Demo_1[,c(1,2,4)]

4、取数据框中的一行与多行

#取某行,可以通过行标或者名称,例如:

取数据框的第一行

Demo_1[1,]

#取多行,例如:

取数据框的第一与第二行

5、判断数据框各行是否完整

complete.cases(Demo_2)

#选择非缺失值的数据  Demo_1[complete.cases(Demo_2),]

6、增加列

#给Demo_1增加一列 Demo_1$score2<-c(12,13,23)

Demo_1<-cbind(Demo_1,score2=c(12,13,23))

7、增加行

#合并某二个数据框的二列 Demo_3<-rbind(Demo_1[,c(1,2)],Demo_2[,c(1,2)])

列表

通过list函数来创建列表,例如,创建一个包含三个列的列表,请注意与R语言中的列表显示有什么不一样:

1.创建列表demo_1

2、创建数据框demo_1_1

列表对每个列显示都会单独以一行的形式存在;

数据框则是以表(或者是矩阵)的形式显示;所以根据数据输出的格式可以判断是列表还是数据框;

创建一个示例列

Demo_2<-list(name=c('lucy','alice','lei'),

heigh=c(178,156,188),

sex=c('F','F','M'),

score=c(200,210,198))

#包括一个缺少值的列表

Demo_3<-list.frame(name=c('lucy','alice','lei'),

heigh=c(178,156,188),

sex=c('F','F',NA),

score=c(200,210,198))

列表特点

列表包含所有列表的特点。

列表与列表的最大区别在于,列表的各列的长度是可以不一致的。

例如:

Demo_3<-list(name=c('lucy','alice','lei'),          

heigh=c(178,156),         

sex='F')

列表基本操作

1.查看列表信息

#查看类型  class(Demo_1)

#查看某列的类型  class(Demo_1$sex)

#查看列表长度即就是列的个数  length(Demo_1)

#列表各项名称 names(Demo_1)   

2.取列表中的某列或者某列元素

#取列表的第二列

Demo_2[2]

Demo_2$heigh

#取列表的某二列的元素

Demo_2[[2]]

Demo_2[[2]]与Demo_2[2]二者输出的区别在于,前者是输出向量,后者输出是列表;

我们详细来看下面的内容:

3.取向量中的某个元素

Demo_2[[N]][M]取:

N列中的第M个元素;

4.判断列表各行是否完整

complete.cases(Demo_2)

#选择非缺失值的数据

Demo_3[complete.cases(Demo_3)

5.增加列

#给Demo_1增加一列

Demo_1$score2<-c(12,13,23)

Demo_1<-cbind(Demo_1,score2=c(12,13,23)

6.其它操作

#删除一个值

Demo_1$score2<-NULL

#把列表转为向量:

unlist()

#移除列表中的元素:

list[[N]]<-NULL

数据的输入与输出之Scan函数

前面系列文章,介绍了R语言中的几种数据格式;其它特殊的数据格式将在后续的文章中介绍,接下来的几篇文章,将讨论如何从外部中读入数据或者将其它格式的数据读入到R环境中;

scan()函数

scan(file="",what=double(0),nmax=-1,n=-1,sep="",

quote=if(identical(sep,"\n"))""else"'\"",dec=".",

skip=0,nlines=0,na.strings="NA",

flush=FALSE,fill=FALSE,strip.white=FALSE,

quiet=FALSE,blank.lines.skip=TRUE,multi.line=TRUE,

comment.char="",allowEscapes=FALSE,encoding="unknown")

一、主要的参数说明如下:

1) what:

声明读入为字符类型数据,可能指定读入的精度/类型,例如:

what=integer(0);what=numeric(0);what=character(0);

如果SCAN()读入有字符与数字,用what=""来进行声明,则会把读入的数字隐式的都转变成字符;

2) SEP:

指定各个读入的数据之间的分隔符;默认情况下分隔符:

空格、tab;如果不是其它分隔符,例如“:

/”通过SEP来指定;

3) 可以通过list指定读入变量的变量名,同时生成的对象为列表,则可以同时读入字符与数字;

4) Skip从第几行开始读入数据;

5) Nlines指定最大读入行数;

6) 如果通过键盘输入的时候,不希望出现下标提示,则可以使用:

quiet=TRUE;

7) encoding=””指定的编码格式,有时候读入的中文可能会出现乱码的时候,可能通过这个参数来指定:

Latin-1或者UTF-8;

二、SCAN几点注意:

1)  用于读入纯字符或者数字,没有表头;

2)  如果输入的单一类型的变量,例如均是:

数值或者均是字符,用scan效率更高。

但其不能读入混合类型的数据,也就是在scan()读入的必须同为字符或者同为数值;

3)  默认情况下用scan读入的数据生成向量类型(这也就是为什么读入的数据必须是同为字符或者同为数字)。

三、案例说明

1、手工输入数据

1)从键盘中输入数字

2)从键盘中输入字符

2、从外部读入

1)从D盘读入TXT文件,例如:

3、如果读入的数据中有字符或者数字,可以通过list来进行指定,则生成的对象是列表格式,如下:

4、指定输入字符的编码类型

数据的输入与输出之READ函数

read.table()函数

1、用于读入表格(表)类型的数据,同时生成数据框对象。

2、读入的数据要求有规则的分隔符,默认有:

空格、TAB、换行符、回车符;其它的分隔符,通过sep=来进行指定。

read.table(file,header=FALSE,sep="",quote="\"'",

dec=".",row.names,col.names,

as.is=!

stringsAsFactors,

na.strings="NA",colClasses=NA,nrows=-1,

skip=0,check.names

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1