R语言ETL工程系列:读写(read/write)

3901436-2146c16188b95623

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。

邮箱:huang.tian-yuan@qq.com


前言

    基本

概念

设置

,我们都已经完成了,那么就可以进入实战阶段了,本篇主要讲解如何把手头的一些数据顺利地导入到R的平台中。

    巧妇难为无米之炊,做数据分析的第一步,首先要有数据。狭义来说,在我们的软件平台进行数据分析,首先要把数据导入到软件平台中。尽管本系列的例子主要利用R语言以及相关包中自带的数据集,但是我们的终极目标是你能够把自己获取的任意形式的数据导入到R语言平台中,然后进行自由操作。
本文不会讲得太细,否则就成为一个帮助文档,但是我会保证你读完本文之后,能够把手头的一些数据顺利地导入到R的平台中,以便在往后的工作中,利用本系列的操作技巧来对自己的数据集进行丰富多样的操作。


CSV

csv格式的数据也许是我们做数据的时候遇到的最常见的格式了,它的全称叫做comma-separated values,逗号分隔数值。我们姑且理解为一个表格数据,以逗号作为列之间的分割点,以回车作为行的分割点。这种数据可以用Excel直接打开,所以如果你有Excel格式能够打开的任意文件,也可以在Excel中导出为csv,从而变为R语言能够直接迅速读取的数据。
本系列谈到的数据操纵,主要是针对表格的,也就是关系型的二维表结构。为了保证你能够拿到数据,我们直接从R基本包里面读出来:

library(tidyverse)
iris %>%
  write_csv("D:/iris.csv")


上面这一步操作,我们就把iris数据集直接读到D盘根目录下(函数中放的就是输出路径,以及你想要输出的文件名称),你可以到D盘去找到它,并用Excel打开它,看看里面有什么数据。
下面我们要把写出去的csv读回来,并存放在mydata中:

read_csv("D:/iris.csv") -> mydata

## Parsed withcolumn specification:
## cols(
##  Sepal.Length = col_double(),
##   Sepal.Width= col_double(),
##  Petal.Length = col_double(),
##   Petal.Width= col_double(),
##   Species =col_character()
## )

mydata

## # A tibble:150 x 5
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##          <dbl>       <dbl>        <dbl>       <dbl> <chr> 
##  1          5.1         3.5          1.4         0.2 setosa
##  2          4.9         3            1.4        0.2 setosa
##  3          4.7         3.2          1.3         0.2 setosa
##  4          4.6         3.1          1.5         0.2 setosa
##  5          5           3.6          1.4         0.2 setosa
##  6          5.4         3.9          1.7        0.4 setosa
##  7          4.6         3.4          1.4         0.3 setosa
##  8          5           3.4          1.5         0.2 setosa
##  9          4.4         2.9          1.4         0.2 setosa
## 10         4.9         3.1          1.5        0.1 setosa
## # ... with 140 more rows


我们可以看到,数据已经读入mydata中,而且read_csv会自动把数据转变为tibble格式。tibble是增强型数据框,不会因为数据量的大小溢出屏幕,只会显示部分数据。另一个特点是,它在读取的时候会对变量的数值类型进行判断,在显示的时候也会对每个变量的类型进行标注。

read_csv的特性还有很多,比如skip可以帮你跳过几行再开始读取。如果有仔细观察,你会发现csv文件中,首行一般都是列的名称,而read_csv也会自动把第一行默认为列名称读入,如果需要直接读入纯数据,需要设置col_names = FALSE.如果能把数据整理成首行为列名称的数据格式,那么你就可以顺利地用我们的代码读入任意的csv格式文件了。

read_csv与read.csv两者之间的不同在于:read_csv返回tibble,read.csv返回data.frame;read_csv默认字符变量就是字符变量,read.csv会自动把所有字符变量转化为因子变量(如果没有R基础,请忽略);read_csv会进行变量类型的判断,read.csv不会(因此有时候用read_csv读取数据会失败,但是用read.csv就会成功)。


其他格式

就目前来讲,我认为R语言能够直接读入任何数据,但是我们不会在这里一一介绍,我们只会告诉大家一个终极目标:无论是任意格式,我们都希望把它转化为R中的二维表形式,从而进行自由地操纵。那么如果你有一份不是csv格式的数据,但是有办法快速把它转格式为csv格式,请毫不犹豫地使用这个方法。下面我们会提供一些R读取其他格式文件的函数,如果感兴趣的可以按图索骥,在网上找到帮助文档。

readLines:按行读取

readxl:读Excel文档

read_html:读html/xml格式数据

read_file:读原始文档

fromJSON:读json格式文件

dbConnect:连接数据库

readTIFF:读tiff格式文件

read.bib:读bib格式文件

其实还有很多,只要认真找,我们发现R几乎能够读入任意格式的文件。如果你想要使用本系列的操作,最佳的方法就是:1.把这些格式转为csv,然后读取csv;2.把这些文件导入后,想办法把数据转化为data.frame或者tibble格式。


小结

本文主要讲了如何读写csv数据,因为它是与二维表结合得最紧密的文件格式,读取后直接就能够使用。我们只讲了如何使用read_csv来读取,实际操作中,为了速度,你可能需要用到fread函数,我个人经常用的方法就是:fread() %>% as_tibble…如果你已经熟练运用read.csv,而数据集本身又不算特别大,也可以继续使用它。通过这种读取方式,我们直接就得到了以二维表形式存在的tibble格式文件,方便我们进一步进行其他操作。建议在本系列中尽量使用tibble格式进行操作,这样便于统一风格。但是记住,tibble本身也属于data.frame的一种,因此所有在data.frame中能够实现的操作,都能够在tibble中无缝使用。



3901436-dd8b84772a2b230c


往期精彩:

R语言ETL工程系列:总论

R语言ETL工程系列:R语言基础设置

R语言文本特征工程:词袋模型


3901436-85119fb927635697

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值