用R做数据分析Word下载.docx
《用R做数据分析Word下载.docx》由会员分享,可在线阅读,更多相关《用R做数据分析Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
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)给向量赋值。
-c(0,1,2,3);
3、向量的元素下标取值是以1开始,这点请刚开始接触R的同学注意。
要前例中取x向量中值为1,则为x[2]
4、如果一个向量中有一个字符,则该向量的类型会变成字符;
如果逻辑变量与数值在一起,则为转换成数值。
TRUE转变成1andFALSE转变成0.
2、在R语言中没有单一的整数、单一字符的概念
X<
-2;
-'
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<
3;
Demo_6<
-2:
5;
Demo_7=Demo_6+Demo_5;
7;
(这也是很多人学习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:
Demo_4%*%Demo_5
4、增加行与列
-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'
M'
score=c(200,210,198))
#包括一个缺少值的数据框
Demo_2<
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)
-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
列表对每个列显示都会单独以一行的形式存在;
数据框则是以表(或者是矩阵)的形式显示;
所以根据数据输出的格式可以判断是列表还是数据框;
创建一个示例列
-list(name=c('
#包括一个缺少值的列表
-list.frame(name=c('
列表特点
列表包含所有列表的特点。
列表与列表的最大区别在于,列表的各列的长度是可以不一致的。
),
heigh=c(178,156),
sex='
列表基本操作
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.判断列表各行是否完整
#选择非缺失值的数据
Demo_3[complete.cases(Demo_3)
5.增加列
#给Demo_1增加一列
Demo_1$score2<
-cbind(Demo_1,score2=c(12,13,23)
6.其它操作
#删除一个值
-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"
一、主要的参数说明如下:
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几点注意:
用于读入纯字符或者数字,没有表头;
如果输入的单一类型的变量,例如均是:
数值或者均是字符,用scan效率更高。
但其不能读入混合类型的数据,也就是在scan()读入的必须同为字符或者同为数值;
默认情况下用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="
colClasses=NA,nrows=-1,
skip=0,check.names