R语言学习笔记(2)——数据结构与数据集
一、数据集
数据集的概念
数据集是由数据组成的矩阵数组,<font color=#ea4335 红色 size=3>行表示观测(observation),列表示变量(variable)

数据类型
- 数值型变量
PatientID、AdmData、Age 为数值型变量 - 字符型变量
Diabetes、Status则为字符型变量 - 逻辑型变量
- 复数型变量
- 原生型(字节)
另外,PatientID 是实例标识符,AdmData 含有日期数据。
Diabetes 和 Status 则为字符型变量,并且分别为名义型和有序型变量
R 将实例标识符称为rownames,将类别型(包括名义型与有序型)变量称为因子
二、数据结构
1. 向量
向量是用于储存数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量
a<-c(1,2,3,4,5,6,7)
注意,单个向量中数据必须是一样的数据类型;标量是只有一个元素的向量,例如 f<- 3、g<-"US"
<font color=#ea4335 红色 size=3>通过在方括号中给定元素所处位置的数值,可以访问向量中的元素,即方括号内是元素的索引
2. 矩阵
矩阵是一个二维数组,即能储存两个维度的向量,其中每个元素的坐标是有两个的。但需要注意的是,其中每个元素都拥有相同的模式,一般通过函数matrix()来创建矩阵。一般的格式为:
mymatrix <- matrix(vector, nrow= number_of_rows, ncol= number_of_columns,
+ byrow = logical_value,
+ dinames= list(char_vector_rownames, char_vector_colnames))
其中,vector 即为包含了矩阵中元素的向量,nrow & ncol 是指定了行数和列数,一个房子的建成,除了框架搭好,砖头砌上的方式也有讲究,byrow 则告诉 R 是以行的顺序添加元素,还是以列的顺序添加。dinames 则告诉了每行每列的名称。
可以使用下标和中括号来选择矩阵中的行、列或元素。
X[i,]指定了矩阵 X 中的第 i 行等等。
3. 数组
数组(array)类似于矩阵,但是它的维度可以大于 2。数组可以依如下格式创建:
myarray <- array(vector, dimensions, dinames)
dimensions 指定了每个维度下标的最大值
从数组中选取元素的方式也是依靠中括号
4. 数据框
数据框的限制相对较小,每一列的数据模式均可不同,可通过data.frame()创建
mydata<- data.frame(col1, col2, col3)
注意,这里的col1, col2, col3 会直接被当做列名,若要修改列名可用函数
names()来修改,如:
names(mydata)[1] <-"k"
这样就可以将第一列的列名修改为“k”了
选取数据框中的特定元素
通过美元符号$ 来选取一个数据框内的特点变量如mydata$a
没个变量名前都要输入数据框的名称可能会有些繁琐,但也清楚的表示了是哪个数据集中的变量点明了归属。如果想省去这一步,可以利用下列几个函数
attach(),detach(), with()
实例标识符(case identifier)
可以在 data.frame()中,rowname 中指定哪个列为实例
5. 因子
变量有以下几种类型
- 名义型
如"type1"等等 - 有序型
如“first”等等,内在有先后顺序的关系 - 连续型
年龄 “Age”
而类别(名义型)变量和有序变量在 R 中称为因子
函数factor()存储类别值以一个整数向量的形式,整数的取值范围是[1...k](注意 k 是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
举一个例子
diabetes <- c("type1", "type2", "type1","type1")
语句diabetes <- factor(diabetes) 将向量储存为(1, 2, 1, 1),并在内部将其关联为 1 = type1, 2= type2 等。(根据字母顺序而定)。 并且在后续分析中,会将其作为名义型变量对待
而有序型变量的表示仅需在 factor()函数中,指定参数ordered = TRUE 即可
但是由于因子的水平,即序列的先后顺序是依据字母的先后顺序,所以默认的排序可能不是我们想要的。这时候我们可以使用参数levels选项来覆盖默认排序
status <- factor(status, ordered = TRUE, levels = c("Poor","Improved","Excellent"))
这时候,levels 的参数相当于直接将向量 c 投影在向量c(1,2,3)上,各水平的赋值为,1 = Poor, 2 = Improved, 3 = Excellent。需要注意的是,保证 levels 中指定的水平需要与数据中的真实值相匹配,若在数据中出现了参数中未出现的数据都将设为缺失值
如果,在数据中,例如男性女性性别这一列,数据被以 1、2 编码,则可以利用以下语句将变量转换为一个无序因子
sex <- factor(sex, levels = c(1,2), labels = c("Male", "Female"))
这个例子中,参数 levels 的作用是给标签定位的,各水平相当于按顺序赋值给 Male 和 Female
6. 列表
列表是最复杂的一种数据结构,某个列表可以是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用list()函数创建列表:
mylist <- list(name1 = object1, name2 = object2)
访问列表的方式与以上几种不太一样,在这里通过双重方括号中指明代表某个成分的数字或名称来访问列表中的元素
mylist <- list(title = g, ages = h, j, k)
#以下两种访问方式输出结果一致
mylist[[2]]
mylist[["ages"]]
三、数据的输入
最为简单的一种可视化输入方法即用fix()函数,直接用键盘来输入数据
当然比较常用的一个输入数据的函数是read.table()
里面涉及到比较多的参数,下面一一列举并说明
1. header
表示文件的第一行时候包含了变量名的逻辑型变量
2. sep
分开数据值的分隔符,默认是 sep="" 表示了一个或多个空格、制表符、换行、或回车,当然也有 sep="\t",使用制表符来分割行内数据
3. row.names
用于指定一个或多个行标记符,将其作为实例标识符,以区分行内数据是不同的个体
4. col.names
如果第一行不包含变量,可以用它指定一个包含变量名的字符向量,即给每一列添加变量名,如果它们都被省略的,R 自动给他们命名 V1、V2...
5. na.strings
用于表示缺失值的字符向量,特点将某些值转换成 NA
6. colClasses
可选的,将每一列的变量分配为特定的类别,比如 colClasses = c("numeric", "numeric", "character"), 如果数据多于三列,则 colClasses 的值会循环
7. quote
对有特殊字符的字符串划定界限的字符串
8. skip
需要跳过的行的数目
9. stringsAsFactors
标记处字符向量是否转化为因子,默认为 TRUE,可以被 colClasses 覆盖,处理大型数据时,将之设置为 FALSE 可以提升速度
10. text
指定文字设置处理的字符串
四、数据集的标注
对于变量,我们希望能有个更详细的标注去描述它。一种解决办法是,将变量标签作为变量名,然后通过位置下标来访问
names(patientdata)[2] <- "Age at hospitalization(in years)"
patientdata[2]
值标签
factor()函数可以为类别型变量创建值标签
levels 为变量的实际值,而 labels 表示包含了理想值标签的字符型变量
R语言学习笔记(2)——数据结构与数据集的更多相关文章
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- R语言学习笔记1——R语言中的基本对象
R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言学习笔记-机器学习1-3章
在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...
- R语言学习笔记(二)
今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...
- R语言学习笔记(一)
1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...
- R语言学习笔记:小试R环境
买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...
- R语言学习笔记:使用reshape2包实现整合与重构
R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...
- R语言学习笔记—决策树分类
一.简介 决策树分类算法(decision tree)通过树状结构对具有某特征属性的样本进行分类.其典型算法包括ID3算法.C4.5算法.C5.0算法.CART算法等.每一个决策树包括根节点(root ...
随机推荐
- html2canvas 生成电子合同书
首先给合同书父级加个ref 然后用html2canvas 插件 然后html2canvas 坑区来了,生成页面的时候,合同书是很长的.他有一部分是黑色的, 最开始从前辈们了解到是滚至顶部解决偏移.然后 ...
- MinIO 搭建
MinIO 搭建 MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务.它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文 ...
- Python SQLAlchemy入门教程
本文将以Mysql举例,介绍sqlalchemy的基本用法.其中,Python版本为2.7,sqlalchemy版本为1.1.6. 一. 介绍 SQLAlchemy是Python中最有名的ORM工具. ...
- [考试反思]0814NOIP模拟测试21
前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...
- 2019 .NET China Conf:路一直都在,社区会更好
这个周末,我从成都飞到了上海参加了首届由社区组织而非官方(比如Microsoft)组织的.NET开发者峰会(.NET Conf).为此,我特意请了两天的假(周五+周六,对,我们是大小周,这周六要上班) ...
- Linux的中断可以嵌套吗?
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 来源: 微信公众号linux阅码场(id: linuxdev) 问答 问:Linux的中断可以嵌套吗? 答:以前是可以 ...
- elasticsearch操作命令
总结几个es的curl操作命令: 查询某条数据:curl -XGET http://elasticsearch:9200/company/company/123?pretty 查询索引下数据总量:cu ...
- js判断是否微信浏览器、IE浏览器
/*判断(微信)浏览器*/ function isWeiXin(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/Mic ...
- window.getComputedStyle()方法的使用及其扩展
1.window.getComputedStyle()方法返回值 是一个可以获取当前元素所有最终使用的CSS属性值.返回的是一个CSS样式声明对象([object CSSStyleDeclaratio ...
- 『题解』[NOI2016]优秀的拆分
如果一个字符串可以被拆分为\(AABB\)的形式,其中$A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串\(aabaabaa\),如果令\(A=aab\),\(B=a\ ...