R语言数据处理及可视化分析
上QQ阅读APP看书,第一时间看更新

1.2 R软件及RStudio软件安装

安装R软件后即可使用R语言,R语言的原生操作界面功能不太完善,一般同时会安装RStudio作为R语言操作界面。也有其他IDE可供选择,但是RStudio是当前最流行的。下面分别介绍R软件及RStudio的安装过程。

由于R语言程序及RStudio更新频率相比其他程序来讲是频繁的,基本几个月就会有更新版本发布,读者可能登录网页时会发现内容和本书有区别,但是安装过程基本一致。对于大多数使用者来讲安装及使用最新版本即可,对于老用户来讲,由于已经安装了某些小众的包,所以需要注意更新后可能存在不兼容问题。

1.2.1 R软件安装

从R语言网站CRAN下载R语言程序包之后安装,下载网址为https://cran.r-project.org/mirrors.html。选择链接中包含China且距离读者最近的镜像链接,单击链接后会出现如图1-1所示的界面,之后单击Download R for Windows进入下一步。

之后单击install R for the first time,如图1-2所示。

最后单击Download R 4.1.2 for Windows即可将R软件程序包下载到本地计算机,如图1-3所示。

图1-1 下载R程序:步骤1

图1-2 下载R程序:步骤2

图1-3 下载R程序:步骤3

最终下载得到安装文件R-4.1.2-win.exe,双击安装即可。安装路径不要有中文、空格、符号等,避免后续步骤错误。建议新建一个独立的文件夹,将R及RStudio均安装在此文件夹下,这样可以大概率避免二者无法关联使用的问题。

1.2.2 RStudio软件安装

RStudio网页在2022年更新为Posit,意在强化对Python语言的支持,以便对数据科学有更加有力的支持。其网址为https://posit.co/downloads/,单击右上角的DOWNLOAD RSTUDIO,进入RStudio下载页面。普通用户选择免费版本RStudio Desktop/Open Source Edition即可,单击DOWNLOAD RSTUDIO FOR WINDOWS按钮进入下一步,如图1-4所示。

图1-4 下载RStudio程序

如果计算机上安装的不是Windows 10操作系统,则可以在下方网页中选择与操作系统匹配的版本下载,如图1-5所示。

图1-5 下载RStudio免费版

最终得到RStudio安装文件,双击将其与R语言安装在同一父文件夹下。

1.2.3 R及RStudio界面介绍

R软件及RStudio安装成功后,默认均会生成桌面快捷方式,在Windows“开始”菜单中也会增加对应的启动图标。单击快捷方式或图标均可启动R软件或RStudio程序。接下来分别介绍各自的操作界面。

首先,介绍R软件界面。由于本书以RStudio为主要的操作界面,因此对R软件操作界面只进行简单介绍。打开R软件程序后会出现默认操作界面,默认会出现一系列R语言版本等提示信息,使用菜单栏中“编辑”菜单下的“清空控制台”可以将屏幕内容清空,或按快捷键Ctrl+L也可以实现该功能。R Console一般称为控制台,输入plot(mtcars)后按Enter键,右侧会显示散点图矩阵。初学者对此图暂时不理解,不要紧张,此处仅仅告诉读者R语言的运行就这么简单,相信学习到后面会觉得这是个非常简单的例子,如图1-6所示。

图1-6 R程序界面

在控制台中,读者可以尝试着进行数学运算,如计算“1+2”之后按Enter键会得到结果“3”。输入print("hello world")后按Enter键会返回结果"hello world"。学习一门新编程语言时许多编程语言实现的第1个程序是打印"hello world",这里算是跟一下风。

其次,介绍RStudio软件界面。分别是菜单栏、快捷菜单栏、控制台、环境窗口、文件窗口等,如图1-7所示。可以在控制台输入R代码,这和R软件中在控制台输入代码类似。对于复杂代码则需要在脚本窗口编写,因为控制台只适合编写简单的短代码,不适合编写代码块,例如控制台中长代码换行时,软件执行的是运行代码动作,这个不是读者需要的。具体界面如图1-7所示。

图1-7 RStudio界面

单击左侧快捷菜单栏中的图标,新建一个R Script窗口,也就是R脚本窗口,如图1-8所示。

图1-8 RStudio中新建一个R Script窗口

后续大部分代码将在脚本窗口编写,因此对这个窗口读者一定要熟知。R脚本窗口左侧是保存按钮,Run用于运行代码,一般选择代码区域后选择Run或者按快捷键Ctrl+Enter执行被选中的代码,窗口界面如图1-9所示。

图1-9 RStudio脚本窗口

1.2.4 关于R语言程序包

R语言程序包是一组打包好的R代码,其中包含不同的功能及数据集,实际使用的主要是其中的函数。读者可以直接安装程序包,原理是从R程序托管网站下载R代码包,之后安装到计算机中。下载CRAN上的R软件包后使用install_packages("包名"),之后通过library("包名")加载到R环境中,之后就可以调用其中的代码和数据集了。

本书后面的内容均在RStudio脚本窗口中进行。RStudio会调用R语言程序,这个过程用户无须做任何额外操作,知道这一机制就可以了。

接下来以安装现在流行的可视化包ggplot2为例进行介绍,具体步骤如下。

首先安装ggplot2程序包。单击左侧快捷菜单栏中的,新建R脚本,在脚本窗口输入代码install.packages("ggplot2"),选择代码后单击Run按钮或按快捷键Ctrl+Enter,等待程序安装。当出现包含successfully提示时表示程序安装成功,如图1-10所示。

图1-10 在RStudio中安装程序包举例

接下来调用刚才安装的程序包ggplot2,之后查看diamonds数据源。通常称为数据集或data.frame,其实读者现阶段可以把它理解为Excel中的表格。随后的代码绘制了一个直方图。这大致就是在R环境绘图的过程,操作比较简单,如图1-11所示。

图1-11 RStudio使用方法举例

后面的章节就是在这个逻辑的基础上增加对数据的处理。绘图需要整洁的数据,但在实际情况中获得的原始数据一般不满足这些要求,因此数据处理对可视化流程至关重要。随后的章节将学习各种图形的绘制、图形元素美化等内容。

理解及掌握了各类图形的绘制方式,以及这些图形通常呈现出来的意义,加上不断练习,当读者面对具体数据时就能构想使用什么图形来可视化更合适,加上对数据关联的现实场景的理解、结合定性文字描述总结,就能形成完整的分析。最后以PowerPoint或其他文档方式,就能生成可对外分享的完整分析报告。

1.2.5 R语言基础运算

R语言的变量类型常见的有双整型(double)、整型(integer)、字符型(character)、逻辑型(logical)。某个对象是什么类型,可以使用typeof()函数进行查看。

双整型用于储存普通数值型数据,可以是正数、负数,可以带小数点。R语言中输入的数值都默认以double型存储。它常被称为数值型numeric。

整型用于储存正数。在R语言中以在数字后面加上大写字母L的方式,指明该数字以整型方式储存,在编程或函数输入时这种方式较为常见。

字符型向量用以储存文本,在R语言中字符加双引号,表示字符型向量中的单个元素被称为字符串(string)。字符串不仅可以包含英文字母,也可以由数字或符号组成。

逻辑型用以储存TRUE(真)和FALSE(假),在R语言中大写的TRUE和FALSE或者大写的T和F都被理解为逻辑型数据。

对于数值型变量,可以进行各种数据计算,R语言支持的数学运算包含常见的加法(+)、减法(-)、除法(/)、乘法(∗)、整除(%/%)、整除求余(%%)、乘方运算(^)等操作,代码如下:

     #代码1-1 R语言中常见的计算功能
     #加法:结果为6
     1+2+3
     # # [1]6
     #减法:结果为2
     3-1
     # # [1]2
     #除法:结果为1.5
     3/2
     # # [1]1.5
     #乘法:结果为10
     5 * 2
     # # [1]10
     #整除:保留除法结果中的整数部分,结果为2
     5 % / % 2
     # # [1]2
     #整除求余:保留除法结果中的余数部分,结果为1
     5 % % 2
     # # [1]1
     #乘方运算:5的2次方,结果为25
     5 * 2
     # # [1]25

R语言也支持一般编程中常见的关系运算。“>”用于判断第1个向量的每个元素是否大于第2个向量的相对应元素。“<”用于判断第1个向量的每个元素是否小于第2个向量的相对应元素。“==”用于判断第1个向量的每个元素是否等于第2个向量的相对应元素。“!=”用于判断第1个向量的每个元素是否不等于第2个向量的相对应元素。“/>=”用于判断第1个向量的每个元素是否大于或等于第2个向量的相对应元素。“<=”用于判断第1个向量的每个元素是否小于或等于第2个向量的相对应元素。向量一般通过c()函数新建,R语言中生成对象并赋值使用符号“<-”。比较运算例子的代码如下:

     #代码1-2 R语言中的关系运算
     x<-c(1,2,6)
     y<-c(4,3,1)
     #判断x中的元素是否大于y中的元素,结果为FALSE FALSE TRUE
     x>y
     # # [1]FALSE FALSE TRUE
     #判断x中的元素是否小于y中的元素,结果为TRUE TRUE FALSE
     x<y
     # # [1]TRUE TRUE FALSE
     #判断x中的元素是否等于y中的元素,结果为FALSE FALSE FALSE
     x==y
     # # [1]FALSE FALSE FALSE
     #判断x中的元素是否不等于y中的元素,结果为TRUE TRUE TRUE
     x!=y
     # # [1]TRUE TRUE TRUE
     #判断x中的元素是否大于或等于y中的元素,结果为FALSE FALSE TRUE
     x>=y
     # # [1]FALSE FALSE TRUE
     #判断x中的元素是否小于或等于y中的元素,结果为TRUE TRUE FALSE
     x<=y
     # # [1]TRUE TRUE FALSE

上面是针对向量间的比较,用法也可以扩展到R语言中最常用的数据框data.frame中。在下面的例子中使用data.frame()函数新建数据框,之后针对数据框中的某一列或者表述为某一变量进行关系运算,代码如下:

     #代码1-3 R语言中变量的运算
     df<-data.frame(category=c('a','b','c','d'),amount=c(1,4,2,6))
     #判断数据框df中的变量amount是否大于3,结果为FALSE TRUE FALSE TRUE
     df $ amount>3
     # # [1]FALSE TRUE FALSE TRUE
     #可以通过判断在数据框中新增加变量
     df $ type<-   ifelse(df $ amount>3,'大于3','小于3')

数据框的其他比较运算与向量比较运算基本类似,在此不再详述。

下面介绍R语言中常用的逻辑运算符号:

“&”是元素逻辑“与”运算符,将第1个向量的每个元素与第2个向量的相对应元素进行组合,如果两个元素都为TRUE,则结果为TRUE,否则为FALSE。“&”与其他编程语言中的and的作用一致,用于多个条件判断中每个条件都是TRUE时返回值为TRUE。

“|”是元素逻辑“或”运算符,将第1个向量的每个元素与第2个向量的相对应元素进行组合,如果两个元素中有一个为TRUE,则结果为TRUE,如果都为FALSE,则返回FALSE。“|”与其他编程语言中的or作用一致,用于多个条件判断中任意条件都是TRUE时返回值为TRUE。

“!”是逻辑“非”运算符,用于返回向量的每个元素相反的逻辑值,如果元素为TRUE,则返回FALSE,如果元素为FALSE,则返回TRUE。R语言中用于获取条件判断的相反值,如1>2的返回值为FALSE, !(1>2)的返回值为TRUE。

“&&”是逻辑“与”运算符,只对两个向量的第1个元素进行判断,如果两个元素都为TRUE,则结果为TRUE,否则为FALSE。

“||”是逻辑或运算符,只对两个向量的第1个元素进行判断,如果两个元素中有一个为TRUE,则结果为TRUE,如果都为FALSE,则返回FALSE。

“%in%”为“包含”运算符,如"a%in%c('a','b','c')",返回值为TRUE,是较为常用的判断是否包含的逻辑运算符号。

对向量df_1、df_2进行交集运算,返回TRUE、TRUE、FALSE、TRUE,代码如下:

     #代码1-4 R语言中向量运算1
     df_1<-c(1,9,FALSE,7)
     df_2<-c(7,10,FALSE,1)
     print(df_1 & df_2)
     # # [1] TRUE TRUE FALSE TRUE

对向量df_1、df_2进行&运算,其中数值被视作TRUE,因此下面的运算结果都为TRUE,代码如下:

     #代码1-5 R语言中向量运算2
     df_1<-c(1,9,5,7)
     df_2<-c(4,10,3,8)
     print(df_1 & df_2)
     # # [1]TRUE TRUE TRUE TRUE

对向量df_1、df_2进行逻辑或运算,因此df_1、df_2对应的两两元素中只要其一个为TRUE,则结果为TRUE。同样地其中的数值被视作TRUE,代码如下:

     #代码1-6 R语言中向量运算3
     df_1<-c(1,FALSE,5,7)
     df_2<-c(4,TRUE,3,8)
     print(df_1|df_2)
     # # [1]TRUE TRUE TRUE TRUE

&&和||只比较向量中的第1个元素,代码如下:

     #代码1-7 R语言中向量运算4
     df_1<-c(1,FALSE,5,7)
     df_2<-c(4,TRUE,3,8)
     print(df_1 & & df_2)
     # # Warning in df_1 & & df_2:'length(x)=4>1'in coercion to  'logical(1)'
     
     # # Warning in df_1 & & df_2:'length(x)=4>1'in coercion to  'logical(1)'
     # # [1]TRUE
     df_1<-c(FALSE,FALSE,5,7)
     df_2<-c(TRUE,TRUE,3,8)
     print(df_1 & & df_2)
     # # Warning in df_1 & & df_2:'length(x)=4>1'in coercion to  'logical(1)'
     # # [1]FALSE

%in%操作符用于判断是否包含,如果包含,则返回值为TRUE,代码如下:

     'a' % in % c('a','b','c','d')
     # # [1]TRUE

!是逻辑非运算符,表示取计算的相反值,下面的计算结果的返回值为FALSE:

     !('a' % in % c('a','b','c','d'))
     # # [1]FALSE