R语言数据结构

浏览: 322

作者:郑连虎,在数学学院取得理学学位的文科生,中国人民大学硕博连读生在读,山东大学管理学学士、理学学士

个人公众号:阿虎定量笔记

前言

本期使用15部电影数据,为R语言零基础读者,讲解:数组与矩阵、 列表、数据框的入门知识。

演示数据下载,请后台回复“数据结构”。

01

数组与矩阵

所谓数组,是相同数据类型的元素按一定顺序排列的集合。相应的,向量是“一维数组”;数组可以是多维的。包含多行、多列数据的一个数组中,数据既可以是数值,也可以是字符串。创建一个数组,要用到“array”函数;例如,创建一个由9 部电影名称组成的二维3×3 数组:

movie <- c("Leon","Farewell My Concubine","Forrest Gump","La vita e bella","Spirited Away","Schindler's List", "Titanic","Inception","WALL·E")

movie_array <- array(movie,dim=c(3,3)) 

movie_array

访问或提取数组中的某个元素,只需知道该元素的位置。例如,提取电影《泰坦尼克号(Titanic)》,它在第1 行、第3 列:

movie_array [1,3]

然后在方括号中标明其位置即可。还可以提取某一行或某一列:

movie_array [1, ] # 提取第一行元素

movie_array [ ,2] # 提取第二列元素

提取行元素时,方括号内列的位置要留空;提取列元素时,方括号内行的位置要留空;

矩阵与数组类似,只不过矩阵只能是二维的;创建一个矩阵,要用到“matrix”函数;需要注意的是,矩阵默认是把“列”优先存储的,需要通过“byrow”参数来优先存储“行”;例如在上面9 部电影中选取6 部创建一个3×2 矩阵:

movie <- c("Leon","Farewell My Concubine","Forrest Gump","La vita e bella","Spirited Away","Schindler's List")

movie_matrix <- matrix(movie,nrow=3,ncol=2)

movie_matrix

movie_matrix <- matrix(movie,nrow=3,ncol=2,byrow=TRUE)

movie_matrix

方括号“[]”还可以提取数组的子集,对于矩阵也同样适用;例如提取“movie_array”这个数组后两行及前两列的4 部电影:

movie_array [2:3,1:2]

02

列表

列表与向量类似,只不过列表可以存储不同类型的数据;例如,可以把电影《这个杀手不太冷(Leon)》的信息用“list”函数存储为下面的一个列表:

movie2 <- list("Leon",1994,c("drama","not-American"))

movie2

该列表里包含3 类元素:一个字符串“Leon”,一个数值“1994”,一个向量“c("drama","not-American")”;访问和提取列表中的元素也使用方括号:

movie2 [1] # 访问列表中的第一个元素

movie2 [1:2] # 访问列表中的前两个元素

除了根据索引值访问和提取列表中的元素,还有一种方法可以访问列表中的元素,即根据元素名称来访问,这就需要先给列表中的3 类元素命名,即“具名列表”

movie2 <- list(name="Leon", year=1994, information=c("drama","not-American"))

movie2

然后再用“$”函数或在方括号中加入引号“[""]”的方式来访问某元素:

movie2$name

movie2["name"]

添加列表元素,可以直接把元素名写入方括号中,再赋值;要想修改列表中元素的值,只需要对其重新赋值,覆盖原先的值;删除列表元素,可以对其赋NULL 值:

movie2 ["score"]<- 8.3 # 添加评分

movie2

movie2 ["score"]<- 9.4 # 修改评分

movie2

movie2 ["score"]<- NULL # 删除评分

movie2

03

数据框

创建数据框,需要用到“data.frame”函数,其每一个参数是一个向量;例如,创建一个包含6 部电影名称及上映时间的数据框:

movies <- data.frame (name=c("Leon","Forrest Gump","Spirited Away","Schindler's List","Titanic","Inception"),year=c(1994,1994,2001,1993,1997,2010))

movies

访问数据框的列元素,可以用“$”函数或者在方括号中写入该列的序号:

movies$year

movies[2]

访问数据框的某个元素,可以在方括号中键入该元素的位置;例如,访问电影《这个杀手不太冷(Leon)》的上映时间:

movies[1,2]

同在列表中添加元素类似,在数据框中增加一列,只需在方括号中添加该列名称,然后赋值:

movies ['score']<- c(9.4,9.4,9.2,9.4,9.2,9.2)

movies

在数据框中增加一行,则需要用到“rbind”函数,参数是数据框自身及包含每一列值的向量;例如,在这6 部电影信息基础上,再加1 部《黑鹰坠落(Black Hawk Down)》的信息:

movies <- rbind(movies,c(name="Black Hawk Down",year=2001,score=8.5))

movies

如果要删除某一行,在方括号中输入该列序号的负值即可,但列序号处要留空:

movies <- movies[-7, ]

movies

如果要删除某一列,直接在方括号中键入列名,并赋一个NULL 值即可:

movies ['score']<- NULL

movies

精彩回顾

R语言绘图:28个实用程序包

Stata绘图:简单好用的37条外部命令

技术贴│Stata回归图表美化

SPSS时间序列分析

R语言图形界面R commander

R语言数据挖掘利器:Rattle包

R语言时间序列分析

技术贴│R语言13种相关矩阵图

技术贴│REmap包:简单好用绘地图

R语言回归分析指南

公众号后台回复关键字即可学习

回复 爬虫             爬虫三大案例实战  
回复 Python        1小时破冰入门

回复 数据挖掘      R语言入门及数据挖掘
回复 人工智能      三个月入门人工智能
回复 数据分析师   数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

推荐 0
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册