数据可视化专题R读取多种格式的数据与常见错误原因汇总

Posted 智汇医圈Plus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据可视化专题R读取多种格式的数据与常见错误原因汇总相关的知识,希望对你有一定的参考价值。

智慧医圈Plus,每天进步一点点!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总
【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

前言

自本期开始,我们将围绕着R与数据可视化发布一个新的专题【R与数据可视化专题】,若你此前阅读“你离R语言大神只有七步之遥”之后,开启过热血沸腾之旅,那么估计多半人尝试之后就只剩无尽沮丧了。没办法,牛B的神器,都是有点性格的,不太容易相处。
为了重启热血之旅,就让我们一步步拆解那篇文章中提到的步骤,逐步熟练掌握这统计与可视化神器吧!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

数据读取的关键点

     所谓巧妇难为无米之炊,用好R的第一步就是这读取数据了。纵使可视化的代码和生成的图让人心醉神迷,若读入数据这第一枪打不响,估计剩下的也就只有无尽惆怅与暗自神伤了!而很多人就半途而废在这读取数据上了。那就让我们先来看看数据读取前需要Check的几个问题吧!

1.弄明白文件的分隔符(从Excel导出时尤其要注意用逗号/Tab/分号或是其它)

2.行名和列名如何设置(直接从文件中读取/读入后再生成)

3.数据类型是什么(纯数字/纯字符串/两者混合,警惕Excel表改动你的数据)

4.是否有缺失值(有/无)

5.目标函数需要什么形式的数据

(List/DataFrame/Vector/Matrix/

Factor)

6.目标函数能否容忍缺失值(具体查看函数说明文档)

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

导入CSV/TXT/TSV文件

接下来就让我们看看常见的CSV/TXT/TSV格式文件的读取吧!

这三种类型的文件通常用read.table函数族来解决。最常用的是read.table和read.csv,而read.csv和read.table实际上是一样的,只是设置的默认值不同罢了。

read.csv、read.csv2、read.delim是read.table函数的包装,分隔符分别对应逗号,分号,制表符,同样接受read.table所有参数。因此针对这三种类型的文件,完全可以用read.table一个函数搞定,只不过要对参数比较熟悉,依据实际情况进行调整。

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总
【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

小智提醒

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

重点注意:

read.table函数以数据框的格式读入数据,所以适合读取混合模式的数据,但是要求每列的数据数据类型相同。


【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

常见参数解析

看如何一步步读入合适的DataFrame

file参数

这是必须的,可以是相对路径或者绝对路径(注意:Windows下路径要用斜杠'/'或者双反斜杠'\')

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

header参数

其默认为FALSE,即数据框的列名为V1,V2...设置为TRUE时第一行作为列名。

神奇的header,当你设置为TRUE时,就自动拥有了列名哦,省时省力。

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

注意

当第一行包含特殊字符时

可能给后续数据处理带来问题

可提前处理好特殊字符

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总
【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

看看R read.table都是怎么处理行列名中特殊字符的!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总
【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

sep参数

读入csv/tsv/txt等文本文件时最为重要的参数,大家在读入数据时不能依赖于后缀名,而应该自行检查文件的分隔符。

尤其是经Mac/Windows其它软件生成或转换而来的文本文件时尤其如此。

一起来看看它的魔法吧!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总


【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

row.names参数

一个header参数让我们自动获得了列名,那么有办法让data.frame自动获得行名吗?省去手动转换的麻烦!那就让我们一起来看看row.names参数吧!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

是不是很酷炫!

注意

rows.names其中一种用法就是指定列数

以其作为行名的时候

一定要确保指定的列没有重复哦

否则就会出现如下错误!

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

stringAsFactors

字符型数据读入时自动转换为因子,因子是R中的变量,它只能取有限的几个不同值,将数据保存为因子可确保模型函数能够正确处理。

But当变量作为简单字符串使用时可能出错。要想防止转换为因子:

1.令参数stringAsFactors=FALSE,防止导入的数据任何的因子转换。

2.更改系统选项options(stringsAsFactors=FALSE)

3.指定抑制转换的列:as.is=参数。通过一个索引向量指定,或者一个逻辑向量,需要转换的列取值FALSE,不需要转换的列取值TRUE。

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

如何加速读取

你的文件是不是很大,大到每读入一次都感觉像是过了一个世纪?那么就快来试试如下方法吧!

设定colClasses参数,其对读取速度能提升一倍

1.先读取头100行,用这小段样本来确定每列的类型

2.识别每列的数据类型,而后再整个读取

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

原理:

这样做可以加速其实是通过事先告诉数据类型,避免R在读入数据时去推测数据类型,而浪费时间。

采用新的读取数据的函数/包,比如...

Amazing包

(不要怀疑你的眼睛,这就是个代称,如果想要知道具体的包名,请 回复20180417R获取;得来不易的才懂得珍惜哦,赶快去试用吧!)

Hadley Wickham和RStudio团队写了一些新的R包,这些包对于每个需要在R中读入数据的人来说都是非常有用的。Amazing包提供了一些在R中读入文本数据的函数。我们通常会用R中的read.table家族函数来完成我们的数据读入任务。这里,Amazing包提供了许多替代函数。它们增加了额外的一些功能并且速度快很多。

下面给一组对比数据说明下什么叫牛B,读取一个包含400万行的数据,两者差距有多大。(实际数据与计算机配置有关,不一定与如下时间相同)

read.table花的时间是50.62秒,而Amazing包中的read_table完成相同的任务只花了2.76秒。是不是有种飞一样的感觉?这是因为read_table把数据当做是固定格式的文件,并且使用C++快速处理数据。膜拜Hadley Wickham大神,简直高产的不要不要。发明了ggplot这种神器不说,简直变态,几乎每个开发的包都是屌炸天的神器。


【数据可视化专题】R读取多种格式的数据与常见错误原因汇总


大家在使用R的过程中是不是遇到过如下问题?

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

当你希望用它来读取相对较大的数据集或是文件的时候,你需要注意了,很可能导致出现上述错误。此错误是由于读入数据所需内存容量已经超出分配给R的内存容量导致的。因此,当你想读入大文件时,需要大概估算读取需要的内存,当大于你所拥有的物理内存的时候,你最好另想办法!

无论如何,当你使用的R读取大量数据的时候,要系统化的想问题:

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

你的系统有多少内存?

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

系统上有没有其他应用?

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

系统上有没有其他人也在工作?

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

啥操作系统?

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

32位还是64位滴?


下面是一个典型的估算内存的场景

大多数初学者刚开始都不会涉及这个问题

无论如何

看看还是很有趣~

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

R语言就是集智慧与美貌于一身的神器

看到这里你有没有想去试一试呢~

赶紧动身吧!



好了~

今天的推送就到这里

欢迎持续关注哟(^U^)ノ~YO

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总
【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

相关原文






往期热点





【数据可视化专题】R读取多种格式的数据与常见错误原因汇总


智汇如水

积少成多

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

HAPPY

【数据可视化专题】R读取多种格式的数据与常见错误原因汇总

科研资讯    尽在智汇

以上是关于数据可视化专题R读取多种格式的数据与常见错误原因汇总的主要内容,如果未能解决你的问题,请参考以下文章

R中数据结构与数据的输入

如何设计一个漂亮的仪表盘—Jeecg仪表盘轻松实现数据可视化专题

R与数据可视化系列如何使用dplyr进行数据清洗和变换

如何设计一个漂亮的仪表盘—Jeecg仪表盘轻松实现数据可视化专题

R读取xlsx数据以及读取所得数据框数据的转化

R矢量地图栅格化(将shapefile转换成raster)