数据-R语言-图表-决策-Linux-Pythontidyverse学习笔记

【tidyverse】part1:数据导入

2018-03-03  本文已影响52人  100gle

1. 基本数据导入与readr包应用

1.1 基本数据导入函数

readr包中的基本导入函数如下:

以上函数(或是未提及的)一旦掌握其中一个,就可以很轻松的触类旁通,本节以read_csv()函数为例

1.2 深入解析

导入数据函数的第一个参数是最重要的一个,即数据文件的路径;只有确定了路径文件才能被正确的读入

当然,除了读取数据之外,还可以直接在函数里创建数据,类似于tibble一样

skip

表示跳过数据的前几行,从跳过的行之后开始读取

read_csv('the first line of metadata
         the second line of metatd
         x, y, z
         1, 2, 3', skip = 2)

comment

表示指定注释符,即读取跳过注释符号所注释的内容

read_csv("# A comment I want to skip 
           x,y,z 
          1,2,3", comment = "#")

na

表示缺失值的呈现方式,可以自己指定

read_csv("a,b,c\n1,2,.", na = ".")

col_names

表示是否将输入内容指定为列名,参数为逻辑值

1.3 readr包的函数对比于R的基础导入函数

1.4 其他方式导入数据

当然还有个别的导出方式可供参考,可以分别使用以下包来进行获取:

小结

--

2. 数据类型转换

2.1 类型转换函数

使用parse_*()函数族能将字符向量转换为特定类型的向量(如逻辑型、整型等),其功能大致类似于R基础的as.*函数

parse_integer(c("1", "231", ".", "456"), na = ".")

在这个函数族中,有8个尤为重要的函数:

2.2 函数详解

数值型:parse_number()

往往数值型在输入时会有以下几个问题需要注意的:

  1. 分隔符不同,有使用「.」或者「,」的情况;因此需要使用locale = locale(decimal_mark = '*')来指定输入的分隔符;默认为「.」,另一个选项为「,」,只有这两种选项可以使用
  2. 数值可能与其他符号相连,类似「%」或「¥」等;但好在parse函数族会自动解决这种情况,会忽略除了数字以外的其他字符
  3. 数值可能不会进行位数分隔,类似于「123,456,789」这种情况不会进行位数分隔;因此需要在第一种情况下,将decimal_mark替换位grouping_mark

字符串型:parse_character()

在现实中,往往会因为编码不同而无法正确识别文本,虽然可以通过参数来修改,但是修改的第一步是对字符进行判断;readr包提供了guess_encoding()函数来帮助确认字符属于哪种编码格式

之后便可以将在locale()参数中使用encoding=*来进行编码的修改

因子型:parse_factor()

该函数可以也可以像factor()函数一样指定水平

日期型:parse_datetime(),parse_date(),parse_time()
像MySQL里的一系列date函数一样,可以分别获取日期数据的年月日、时分秒等;
并且还可以使用R转换为时间值的format类型(%b、%Y等)

parse_date("01/02/15", "%y/%m/%d")

2.3 文件转换

readr包可以通过文件数据中的某些关键字,启发式地自动判断读入的文件的数据类型;
当然类似于猜测编码格式一样,readr的另一个函数可以帮助来判断一个向量的数据类型:

在使用read_*数据导入函数族时,使用col_types=cols(column = col_type)参数来指定变量的类型,既能避免readr错误识别变量类型,还能加快读取速度;这就类似于R基础导入数据中的colClass参数

小结

--

3. 数据导出

使用readr包的write_*函数族来进行数据的导出,这一族的数据导出的数据有以下两点优点:

  1. 永远使用UTF-8编码
  2. 将日期值按「ISO-8601」编码标准来存储,使得在任何情况下都能被正确读取

小结

上一篇 下一篇

猜你喜欢

热点阅读