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 ...
随机推荐
- bit(比特)与Byte(字节)的区别与关系
1.bit:位 (小写b) 也称比特 是英文 binary digit的缩写 二进制数系统中,每个0或1就是一个位(bit)位是数据存储(计算机中信息)的最小单位计算机中的CPU位数指的是CPU一次能 ...
- JAVA中的NIO (New IO)
简介 标准的IO是基于字节流和字符流进行操作的,而JAVA中的NIO是基于Channel和Buffer进行操作的. 传统IO graph TB; 字节流 --> InputStream; 字节流 ...
- Linux中的快捷方式
history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有 ...
- Feeling after reading《Jane Eyre》
Yesterday I read and listened over the book named <Jane Eyre>, the book is very thoughtful, th ...
- Spring Boot实战之定制type Formatters
本文首发于个人网站:Spring Boot实战之定制type Formatters 前面我们有篇文章介绍了PropertyEditors,是用来将文本类型转换成指定的Java类型,不过,考虑到Prop ...
- Python3安装目录介绍
目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构. 假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了: Foo/ |-- bin/ | ...
- ARM7中断的理解
谈谈对中断的理解? 中断是计算机中处理异步事件的重要机制 中断触发的方式: 1)中断源级设置 按键:(CPU之外的硬件) 设置中 ...
- Prometheus客户端开发:腾讯云CLB
一:简介 随着prometheus的使用人群逐渐扩大,官方定义的client exporter虽然能满足我们的大部分需求,但是很多监控还是需要我们自定义开发,以下内容就是基于腾讯云SDK,对腾讯云CL ...
- W5500
W5500 芯片是一款韩国全硬件TCP/IP协议栈以太网接口芯片, 最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图 :
- BIM到底是啥?
近年来随着BIM的大火以及一些政策的支持,BIM逐渐走入建筑行业的视野,但其实大部分人都不知道或者说不了解BIM到底是啥.去百度上进行搜索,你会知道BIM就是Building Infor ...