一、数据集

数据集的概念

数据集是由数据组成的矩阵数组,<font color=#ea4335 红色 size=3>行表示观测(observation),列表示变量(variable)

数据类型

  1. 数值型变量

    PatientID、AdmData、Age 为数值型变量
  2. 字符型变量

    Diabetes、Status则为字符型变量
  3. 逻辑型变量
  4. 复数型变量
  5. 原生型(字节)

另外,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. 因子

变量有以下几种类型

  1. 名义型

    如"type1"等等
  2. 有序型

    如“first”等等,内在有先后顺序的关系
  3. 连续型

    年龄 “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)——数据结构与数据集的更多相关文章

  1. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  2. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  3. R语言学习笔记1——R语言中的基本对象

    R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...

  4. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  5. R语言学习笔记-机器学习1-3章

    在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...

  6. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  7. R语言学习笔记(一)

    1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...

  8. R语言学习笔记:小试R环境

    买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...

  9. R语言学习笔记:使用reshape2包实现整合与重构

    R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...

  10. R语言学习笔记—决策树分类

    一.简介 决策树分类算法(decision tree)通过树状结构对具有某特征属性的样本进行分类.其典型算法包括ID3算法.C4.5算法.C5.0算法.CART算法等.每一个决策树包括根节点(root ...

随机推荐

  1. Luogu P2668 斗地主(NOIP2015)

    还记得那道我只用特判得了30分的"斗地主"吗? 我今天脑抽打算把它改A掉.为什么不用这大好时光去干些更有意义的事 于是我就挖了这个坑. 题解: 题目链接:P2668 斗地主 本题就 ...

  2. 敏捷宣言(Agile Manifesto)和敏捷开发十二原则

    敏捷宣言 The Agile Manifesto Individuals and interactions over Process and tools 个体与交互 重于 过程和工具 Working ...

  3. 非旋treap (fhq treap) 指针版

    传送门 看了一圈,好像真的没什么用指针的呢.. 明明觉得指针很好看(什么??你说RE???听不见听不见) 其实我觉得用数组的话不RE直接WA调起来不是更困难嘛,毕竟通过gdb还可以知道哪里RE,WA就 ...

  4. The reference to entity "characterEncoding" must end with the ';'

    在配置数据库连接池数据源时,本来没有错误,结果加上编码转换格式后eclipse突然报错: 这是怎么回事? 经过查询,发现这个错误其实很好解决. 首先,原因是: .xml文件中 ‘ & ’字符需 ...

  5. 通俗易懂了解Vuex

    1.前言 在使用Vue进行开发的时候,关于vue组件通信的方式,除了通俗易懂了解Vue组件的通信方式这篇博文谈到三种通信方式,其实vue更提倡我们使用vuex来进行组件间的状态管理以及通信问题.Vue ...

  6. Kubernetes3-kubectl管理Kubernetes容器平台-1

    一.简介 1.什么是kubectl kubectl前面其实已经用到了一些,它其实就是用于操作kubernetes集群的命令行接口,通过kubectl的各种命令实现各种功能 2.环境还是用上一偏文章 K ...

  7. 安装cnpm遇到的问题

    安装 cnpm时,用git安装时,安装好node环境后,测试版本号node -v和npm -v都没问题,可以输出版本号,但是安装cnpm时,使用淘宝镜像安装后,会出现如下警告: 这个是提醒你安装的版本 ...

  8. 「POJ 3268」Silver Cow Party

    更好的阅读体验 Portal Portal1: POJ Portal2: Luogu Description One cow from each of N farms \((1 \le N \le 1 ...

  9. Java 博客系统 Tale

    Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...

  10. Linux学习(推荐学习资源)——保持更新

    1. 介绍 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Unix工具软件.应用程序和网络协议. ...