R语言自学笔记-2内置数据集

Python046

R语言自学笔记-2内置数据集,第1张

#b站视频——R语言入门与数据分析

#内置数据集

#固定格式的数据(矩阵、数据框或一个时间序列等)

#统计建模、回归分析等试验需要找合适的数据集

#R内置数据集,存储在,通过

help(package="datasets")

#通过data函数访问这些数据集

data()

#得到新窗口  前面:数据集名字  后面:内容

#包含R所有用到的数据类型,包括:向量、矩阵、列表、因子、数据框以及时间序列等

#直接输入数据集的名字就可以直接使用这些数据集

#输出一个向量

rivers

#是北美141条河流长度

#这些数据集的名字都是内置的,一般我们在给变量命名时最好不要重复

#否则数据集在当前对话中会被置换掉

#例如

rivers<-c(1,2,3)

rivers

#不过影响不大

#再使用data函数重新加载这个数据集就可以了

data("rivers")

rivers

#一些常用内置数据集

#默认介绍页面只有名字和介绍,并没有给出数据分类

#哪些是向量、矩阵、数据框等?

#查看数据集除了直接敲数据集名字显示数据之外

#还可以使用help函数查看每个数据集具体的内容

help("mtcars")

euro

#欧元汇率,长度为11,每个元素都有命名

#输出向量的属性信息

names(euro)

#将5个数据构成一个数据框

向量

state.abb #美国50个州的双字母缩写

state.area #美国50个州的面积

state.name #美国50个州的全称

因子

state.division #美国50个州的分类,9个类别

state.region #美国50个州的地理分类

#

state<-data.frame(state.name,state.abb,state.area,state.division,state.region)

state

state.x77 #美国50个州的八个指标

state.x77

VADeaths #1940年弗吉尼亚州死亡率(每千人)

volcano #某火山区的地理信息(10米×10米的网格)

WorldPhones #8个区域在7个年份的电话总数

iris3 #3种鸢尾花形态数据

#以上矩阵→适合画热图

heatmap(volcano)

#这里只是作为一个演示,还需要对这个图进行一些调整

#更复杂的数据结构

Titanic #泰坦尼克乘员统计,是一个数组

UCBAdmissions #伯克利分校1973年院系、录取和性别的频数

crimtab #3000个男性罪犯左手中指长度和身高关系

HairEyeColor #592人头发颜色、眼睛颜色和性别的频数

occupationalStatus #英国男性父子职业联系

#类矩阵

eurodist #欧洲12个城市的距离矩阵,只有下三角部分

Harman23.cor #305个女孩八个形态指标的相关系数矩阵

Harman74.cor #145个儿童24个心理指标的相关系数矩阵

#R中内置最多的数据集——数据框

cars #1920年代汽车速度对刹车距离的影响

iris #3种鸢尾花形态数据

mtcars #32辆汽车在11个指标上的数据

rock #48块石头的形态数据

sleep #两药物的催眠效果

swiss #瑞士生育率和社会经济指标

trees #树木形态指标

USArrests #美国50个州的四个犯罪率指标

women #15名女性的身高和体重

#列表

state.center #美国50个州中心的经度和纬度

#类数据框

Orange #桔子树生长数据

#时间序列数据,和数据框类似,不同的是具有时间序列的顺序,是数据分析中非常常见的格式

#能反映出变化情况以及变化的趋势等

#因此有很多专门的方法用于时间序列的数据分析

co2 #1959-1997年每月大气co2浓度(ppm)

presidents #1945-1974年每季度美国总统支持率

uspop #1790–1970美国每十年一次的人口总数(百万为单位)

#除了内置数据集之外,许多R扩展包中也内置了很多数据集

#这些数据集作为扩展包的函数使用的案例

#加载R包之后这些数据集也同样被加载进来

#例如MASS包中的Cars93数据

#包含了27个变量,是1993年93辆汽车的型号指标

install.packages("MASS")

library("MASS")

help("Cars93")

#使用data函数在参数package中等于对应R包的名字,即可列出每个R包中包含的数据集

#ex

data(package="MASS")

#显示R中所有可用的数据集

data(package=.packages(all.available = TRUE))

#不加载R包使用其中的数据集

data(Chile,package="car")

Chile

#>data(Chile,package="car")

#Warning message:

#  In data(Chile, package = "car") : data set ‘Chile’ not found

#>Chile

#Error: object 'Chile' not found

install.packages("car")

library("car")

help("Chile")

方法是:

1、下载Rtools。

2、打开Rstudio,打开新的工程,选好路径,开始写包。

3、在Rstudio中设置工作目录到包文件夹所在的路径,检查Rtools的环境是否能开始写包。

4、打开创建好的目录下的R文件夹,创建R脚本并调试。

5、打开包的文件夹,找到R子文件夹,在里面创建新的R脚本。

6、保存写好文件注释头的脚本,打开描述文件并按格式填写。

7、将文件写好,依次进行打包,建立文件,打压缩包和安装写好的包即可。数据是事实或观察的结果。

在第3章,讲到了矩阵matrix和向量vector,矩阵和向量都只能包含某一种数据类型,而在实际应用中,这种情况比较少见。

当我们做一项数据调查时,调查报告通常不可能只含有数值型数据或者字符型数据,而是包含各种数据类型(做分析时需要对目录数据进行编码,这部分内容会在python分析基础中讲到)。因此,我们需要一种新的容器类型——data frame。

有人把data frame翻译为数据帧,这种译法是不准确的,尤其是考虑到“帧”的定义和data frame的含义的差别。也有人完全按照字面意思把它翻译成数据框架,我感觉有些画蛇添足,把原本不难理解的东西复杂化。

本章主要讲了:

其实很简单,用一个例子就能解释明白:中学时老师统计的期末成绩单就是一个df,通常一个Excel表格中包含以下内容:

在实际操作中,我们通常读取一个Excel表单或者一个csv文件,并将这个文件赋值给一个变量(df或者data),后期对文件的操作可以通过变量名来进行。需要注意的是,df的每一行表示不同的观测对象,每一列表示一个定语或变量。在成绩单里,每个学生都是一个被观测的个体,而各科成绩表示不同的定语(Attribute),定语是用来描述观测对象的特征的。

下面我将采用R语言内置的数据集mtcars(motor trend car road tests)来做演示。

首先打开RStudio,用 data() 函数载入数据集:

通过前五行数据,我们可以看到,每行表示不同的汽车型号,列表示每个汽车型号的不同特征,例如排量,马力,气缸数等等。

通常在获取一个数据集后,我们需要了解它的结构,例如一共有几行,有哪些列,列的名字,每列的数据类型等。查看df的结构,需要 str() 函数。

输出结果表示,mtcars一共有32行(observations),和11列(variables)。

$符号后面是列名,一共11个,且mtcars中所有的数据类型都是numerical。

前面使用了内置数据集,接下来可以使用 data.frame() 自己创建一个,括号中填入不同的向量,这些向量必须包含相同的元素数量。

* 注意区分R和python在创建df时的不同语法

我们以太阳系内八大行星为例,建立一个df,包含行星的名字,类型(岩质行星还是气态巨行星),相对地球直径的比值,相对地球公转周期的比值以及是否含有星环(不止土星有星环)。

观察一下我们创建的df,不难发现每个向量就是df中的每一列。(在python中有类似的用法,即通过字典dictionary创建df,参见python教程。)

跟矩阵和向量类似,我们可以选择df的特定行和 / 或列。利用中括号,在逗号的左边填入想选择的行,右边填入列。这个用法跟前面矩阵的元素选择重复,这里就省略了。

这里介绍另外一种方法,只用列名选择某个特定的列:

df$colname

输出的结果是一个向量,可以用 class() 函数验证向量元素的类型。

更进一步,如果我们想选出有星环的行星,可以通过以下操作:

可以看出,我们筛选出了 rings 列中,值为 TRUE 的所有行。

那么能否筛选不带星环的行星?

方法很简单,只需要在中括号中加入一个 !

* 注意:由逻辑值组成的列通常被用来筛选符合某些条件的行,若没有由逻辑值组成的列,我们可以通过逻辑运算符自己建立一个筛选标准

现在我们尝试找出影响行星是否有星环的因素。

对比这两个结果,可以发现太阳系中的岩态行星都没有星环,而气态巨行星都有星环。因此我们可以猜测,影响一个行星是否有星环的因素是行星的类型。当然这只是一个假设,要想验证这个假设在银河系甚至可观测宇宙是否成立,我们需要更多数据来进行 假设检验 ,这部分的内容需要懂点统计学,后面会讲到。

上一步实际上是给我们的数据集创建了一个子集,用来过滤掉一部分不需要i的数据。现在介绍一种更高效、更普适的方式:

借助第二个arg,我们可以根据“某些条件”来选择。这里的条件覆盖较广的范围,不再局限于逻辑值。

* 注意:这里的‘单等于号’表示赋值,‘双等于号’表示逻辑判断

现在试试用numerical数据作为筛选条件,选出直径比地球直径大的行星:

排序要用到 order() 函数:

* 注意:decreasing默认为假,也就是说如果不填这个arg, order() 函数会进行升序排列