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 的函数运行的结果都是以列表的形式进行返回在实践中可以感受到很多运行结果都是以列表形式进行返回式

相关文章
|
1月前
|
数据采集 数据挖掘 数据处理
DataFrame 的缺失值处理:填充、删除与插值
【5月更文挑战第19天】DataFrame数据处理中,面对缺失值问题,常用方法包括填充(如固定值、平均值)和删除。插值是一种有效手段,如线性插值适合时间序列数据。根据数据特性和分析目标,可组合使用多种方法,如先填充再插值。灵活应用这些策略能提升数据质量和分析准确性,为决策提供可靠支持。
34 2
|
1月前
|
数据挖掘 计算机视觉 Python
Python实现对规整的二维列表中每个子列表对应的值求和
Python实现对规整的二维列表中每个子列表对应的值求和
18 0
|
1月前
R语言自定义两种统计量度:平均值和中位数,何时去使用?
R语言自定义两种统计量度:平均值和中位数,何时去使用?
|
1月前
|
数据处理 Python
使用Pandas解决问题:对比两列数据取最大值的五种方法
​在数据处理和分析中,经常需要比较两个或多个列的值,并取其中的最大值。Pandas库作为Python中数据处理和分析的强大工具,提供了多种灵活的方法来实现这一需求。本文将详细介绍五种使用Pandas对比两列数据并取最大值的方法,通过代码示例和案例分析,帮助新手更好地理解并掌握这些技巧。
49 0
|
1月前
|
人工智能 程序员 数据处理
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
61 0
Pandas数据处理4、DataFrame记录重复值出现的次数(是总数不是每个值的数量)
|
11月前
|
Python
将列表按照指定的规则排序并添加平均值
将列表按照指定的规则排序并添加平均值
55 1
|
C++ 计算机视觉 索引
【C++】删除矩阵中的指定列(非常实用)
【C++】删除矩阵中的指定列(非常实用)
|
数据可视化
scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值
scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值
188 0
|
数据挖掘 Python
Pandas唯一值、值计数以及成员资格
Pandas唯一值、值计数以及成员资格
Pandas唯一值、值计数以及成员资格
|
PyTorch 算法框架/工具 索引
pytorch使用布尔索引获取指定维度元素
pytorch使用布尔索引获取指定维度元素
229 0