R for data Science(六)(readr 进行数据导入)

数据整理

image

这周我们进入该书第二部分,讲解数据的整理和清理数据

分为三个部分:

  • Tibbles

  • data import

  • tidy data

我们主要针对三种类型的数据:

  • 关系型数据

  • 字符型数据

  • 时间型数据

Tibbles

在这本书中,我们使用的是“tibbles”,而不是R的传统的 data.frame。Tibbles是数据框架,但是它们会调整一些旧的行为,使用者更方便。

Creating tibbles

将数据框转变成 tibbles用as_tibble()
library(tidyverse)
as_tibble(iris)
image
当然我们也可以利用自己的数据创造tibble
tibble(x = 1:5, y = 1, z = x ^ 2 + y)

Tibbles vs. data.frame

二者最主要的区别有两点
  • 打印方式不同
Tibbles有一个改进的打印方法,只显示前10行,以及适合屏幕的所有列。这使得处理大数据变得更加容易。除了名称外,每个列都报告其类型,这是借鉴str()的一个很好的特性
当然也可以通过设置下列参数来控制默认的打印方式:
options(tibble.print_max = n, tibble.print_min = m) #if more than m rows, print only n rows. 
options(dplyr.print_min = Inf) 
 #show all rows.options(tibble.width = Inf)
 # print all columns, regardless of the width of the screen
  • 取子集方式不同
如果你想要筛选标量,你可以使用 $ 和 [[. 和[[ 来提取名字或者位置
与数据集相比,tibbles更严格:它们从不进行部分匹配,如果您试图访问的列不存在,它们将生成一个警告。
Data import

数据导入采取的reader包,这是tidyverse的核心部分

大部分readr函数都会使得数据变为 tibble
  • read_csv()读取逗号分隔的文件,默认col_names=T

  • read_csv2()读取分号分隔的文件(在那些被用作小数点的国家通用),

  • read_tsv()读取制表符分隔的文件,

  • read_delim()读取带有任何分隔符的文件。

  • read_fwf()读取固定宽度的文件 使用fwf_widths()或其在fwf_position()的位置指定字段

  • read_table()读取固定宽度文件的常见变体,其中列之间用空格分隔。

  • read_log()读取Apache风格的日志文件

下面的章节,我们主要集中在read_csv函数
image
  1. read_csv() 函数默认使用第一行作为列名称
  2. skip=n skip 参数代表跳过前n行,从第n+1行开始读取
  3. comment 参数
    comment="#",代表丢弃所有以"#"开头的行
  4. 数据中没有列名称。可以使用col_names=F,来告诉read_csv(),不要将第一行作为列标题,
    而是将各列依次标注为X1到Xn:

有时候,文件顶部有几行元数据。可以使用skip = n跳过前n行;或者使用comment = "#"删除以#开头的所有行

read_csv("The first line of metadata  The second line of metadata  x,y,z  1,2,3", skip = 2)
image
read_csv("# A comment I want to skip  x,y,z  1,2,3", comment = "#")
image

数据可能没有列名。您可以使用col_names = FALSE来告诉read_csv()不要将第一行作为标题,而是将它们按顺序标记为X1到Xn

read_csv("1,2,3\n4,5,6",col_names =F)
image.png

添加列名。数据可能没有列名,我们可以向col_names传递一个字符向量,以用作列名称:

read_csv("1,2,3\n,4,5,6",col_names=c("x","y","z"))
image.png

na值处理,用来定义文件中哪些值是缺失值

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

有时候csv文件中的字符串会包含逗号。为了防止引发问题,需要用引号(如 "或' )将逗号围起来。按照惯例,read_csv() 默认引号为", 如果想要改变默认值,就要转而使用read_delim() 函数。要想将以下文本读进入一个数据框,需要设定什么?

read_delim(x,delim = ",",quote = "'")
image.png
read_csv() now supports a quote argument, so the following code works.
read_csv(x,quote = "'")
image.png
写入文件 Writing to a file

write_csv
write_tsv
write_excel_csv (该函数会在文本开头写入一个特殊的字符(字节顺序标记),告诉Excel这个文件使用UTF-8编码 )
它们总是使用UTF-8对字符串进行编码
它们使用ISO 8601格式来保存日期和日期时间数据,以便这些数据不论在何种环境下都更容易被解析

write_csv(cha)
write_tsv() 
write_excel_csv() #导出csv到excel
write_rds()和read_rds()是基本函数readRDS()和saveRDS()的统一包装器,这些数据以R的自定义二进制格式RDS存储,类似于save()函数重点Rda
write_rds(challenge, "challenge.rds")
read_rds("challenge.rds")

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容