R 数据框、因子和列表|学习笔记

简介: 向量,矩阵和数组,它们共同的特点就是它们中的数据只能拥有一组模式,也就是可以尝试字符型,也可以尝试数值类型,但是不允许在一个向量中即出现字符型也出现数值型,如果一个数据类型中即想放数值型,也想放字符型,也就是不同的模式的数据,应该用什么样的方式进行存储?数据框就可以存放不同类型的数据。

开发者学堂课程【R 语言编程基础R 数据框、因子和列表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/564/detail/7716


R 数据框、因子和列表

 

内容介绍

数据框

因子

列表

 

内容简介:

向量矩阵和数组它们共同的特点就是它们中的数据只能拥有一组模式也就是可以尝试字符型也可以尝试数值类型但是不允许在一个向量中即出现字符型也出现数值型如果一个数据类型中即想放数值型也想放字符型也就是不同的模式的数据应该用什么样的方式进行存储数据框就可以存放不同类型的数据

 

一、数据框

1、数据框的概念相对于矩阵它更普遍和一般数据框将会是在 R 中最经常处理的一种数据结构比如一个病例数据

image.png

实际上它的数据是一种典型的数据框的数据类型它的第一列是病人编号第二列是入院时间第三列是年龄前面的都是数值型第四列是糖尿病类型第五列是病情后面是字符串类型的数据这种数据的类型是多种模式的因此无法将这个数据集放入一个矩阵中所以使用数据框是最佳的选择

2、数据框是通过函数 data.frame 进行创建的手动创建一个数据框第一列是病人的 ID第二列是病人的年龄第三列不输入时间的类型直接输入第四列糖尿病的类型最后一个数据列是状态用 data.frame 创建数据框这个是病人的数据后面的参数放每一列的名字

patientID <- c(1,2,3,4)

age<- c(25, 34, 28, 52)

diabetes <- c ("Type1", "Type2", "Type3", "Type2")

status <- c("poor", " Improved", "Excllent", "poor")

patientsData <- data. frame (patientID, age, diabetes,status)

patientsData

patientID age diabetes status

1        25  Type1   poor

2        34  Type2  Improved

3        28  Type3  Excllent

4        52  Type2    poor

列和列之间的数据模式可以一样但是每一列它的数据模式必须是唯一的在矩阵或者数组中通常是用中括号以及矩阵行列的数值对矩阵单独的元素进行定位在数据框中也可以使用中括号和下标记号的方法对数据框单个元素进行访问

(1)比如想取数据框中第一列和第二列patientsdata可以用1-2方式进行获取获得病人的 ID 和病人的年龄

patientsData[1:2]

patientID age

1        25

2        34

3        28

4        52

(2)用向量 c通过列名取到该列的数据

patientsData [c ("diabetes", "status")+]

Diabetes  status

Type1     poor

Type2    Improved

Type3     Excllent

Type2     poor

(3)用符号$对数据进行读取读取数据集年龄

patientsData$age

25 34 28 52

(4)当使用符号$对数据集进行选取时每一次都要输入数据集的名字$再加上变量特别麻烦如果只输入变量名就可以获取变量的数据值需要 attachattach 可以将数据框添加到 R 的搜索路径中,R 遇到变量名之后就可以直接定位到数据框下的变量这样就不需要写变量名

(5)以变量数据集为例比如想取到变量数据集中病人年龄的变量值 age

patientsData$age

25 34 28 52

3、以汽车的数据集为例

head (mtcars)

这个数据集中有变量 mpgcyl如果要取到 mpg 变量名下面的数据现在使用的方式是 mtcars$mpg可以取到它但是如果单独输入 mpg这样变量是没有的如何通过直接输入变量进行获取变量下面的数据就要使用 attach函数mtcars 数据框添加到R的搜索路径中再单独输入 mpg 就可以得到数据

attach (mtcars )

Mpa

这样就可以直接输入变量名获取其中的数据值相对于将这个数据框加入到 R 的搜索路径中也有反向操作就是将数据框从 R 的搜索路径中移除移除的命令是 detach (mtcars )这样就将数据框从路径中进行移除移除之后再使用 mpg找不到变量注意detach 函数并不会对数据框本身做任何处理用 detach 仅仅是将数据框从搜索路径中移除并没将 mtcars 数据框移除除了 detach 函数还有 with 函数可以实现 detach 相近的功能比如 with 加入 mtcars 数据框加入大括号直接对 mtcars 里面的 mpg 变量进行操作把它进行赋值再输出显示 l

with (mtcars ,{

+1<-mpg

+1}

+)

在 with 中指明 mtcars 数据框因此不需要加数据框的名字其中的变量进行操作操作的结果也可以进行展示注意直接取变量里面的数据集它仅仅只局限于在 with 后面的大括号里面这些操作离开大括号之后效果就不存在了比如在with大括号里面创建l的一个变量并且把 mpg 的数值赋值给 l在 with 之外输入 l是找不到变量 l的

 

二、因子

1、因子是以等数下面的形式进行存储类别值也就是名义型的数据比如 diabetes,"Type1" "Type2" "Type3" "Type2",病人类别的数据如果函数 factor 可以将原来类别型的变量转化成指数型的向量把 diabetes 进行转换,diabetes <- factor (diabetes),用函数 factor 相当于把 Type1,Type2,Type3用数字的向量进行存储输入diabetes 查看有什么变化跟之前不一样的是它虽然也会输出别名但是它显示 levels就是它在内部就将 Type11进行联系,Type22进行联系,Type33进行联系

diabetes <- factor (diabetes)

Type1 Type2 Type3 Type2

Levels: Type1 Type2 Type3

2、同时针对向量 diabetes 进行任何分析它都会作为名义型的变量进行对待并选择适合这个测量尺度的统计方法

 

三、列表

1、列表是 R 数据类型中最为复杂的一种数据类型列表就是一些对象的有序集合列表是允许整合若干个对象到单个对象的名下也就是列表中可能有若干个向量或者若干个矩阵以及数据框或者其他列表的组合可以使用函数 list 创建一个列表比如创建 mylist

Mylist<- list (object1, object2,........)

用这种模式就可以创建列表列表中的对象可以是任何一个数据可以存向量也可以存矩阵数据甚至数据框等等

2、举例首先创建所需要的各种对象一个对象是字符型数据字符串是 my first list第二个对象是向量,12,45,43,90,第三个对象是矩阵第四个存放的是字符型的数据

G <-"My first list"

h <- c(12, 45, 43, 90)

j <- matrix(l:10, nrow=2)

k <- c("one", "two", "three")

创建好四个对象需要把四个对象放在一个地点中进行存储

mylist<-list (g,h,j,k)

这样就生成 mylist 列表

Mylist

[[1]]

[1] "My first list"

[[2]]

[1]12 45 43 90

[[3]]

[,1] [,2] [,3] [,4] [,5]

[1, ]  1   3  5  7  9

[2, ]  2   4  6  8  10

[[4] ]

[1]"one" "two " "three "

第一个对象是字符型第二个是向量第三个是矩阵第四个是字符型的向量这就是 list 数据类型

3、如何单独访问 list 当中的元素比如访问 list 中的第二个对象list 表和其他的数据类型访问元素的方式有些不一样其他访问元素时采用的是中括号的形式也就是一个方括号的形式list 要通过双重方括号进行访问比如访问mylist 中第二个对象可以通过 mylist[[2]]得到12,45,43,90,如果指定了列名时也可以在方括号中加入列名进行访问列表中的对象列表是 R 中非常重要的数据结构它之所以重要主要有两个方面的原因第一个列表允许一组简单的方式进行组织和重新调用它并不相干的一些信息第二个是有许多 R 的函数运行的结果都是以列表的形式进行返回在实践中可以感受到很多运行结果都是以列表形式进行返回式

相关文章
|
Ubuntu Linux 内存技术
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
5501 0
Linux下使用alsamixer配置系统默认的声卡设备(默认音频输出设备、输入设备、系统音量)
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
504 2
|
传感器 存储 安全
【物联网】Arduino 实验合集
【物联网】Arduino 实验合集
619 2
|
网络协议 网络架构
彻底弄懂ip掩码中的网络地址、广播地址、主机地址
彻底弄懂ip掩码中的网络地址、广播地址、主机地址
2230 0
余三码和8421码的关系以及使用场景
余三码与8421码是两种不同的二进制编码方式,常用于表示十进制数。余三码是8421码加上3形成的无权码,具有自补性和进位信号特点,适合错误检测,但求和需修正。8421码是恒权码,方便二进制与十进制转换,常用于数字显示、数据传输和精确十进制运算。在计算机领域,两者各有应用场景,如BCD码用于七段显示器和精确计算,余三码则用于错误检测和简化算术操作逻辑设计。
|
监控 网络协议 安全
网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
3004 1
网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
|
物联网 Android开发
NFC技术的定义通信方式
NFC技术的定义通信方式
|
Ubuntu 网络协议 Linux
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(四)传输文件
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(四)传输文件
1271 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(四)传输文件
|
SQL 消息中间件 缓存
回滚机制有多少种?它们的实现原理是什么?你确定都知道?
回滚是指当程序或数据出错时,将程序或数据恢复到最近的一个正确版本的行为。最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制可保证系统在某些场景下的高可用。