R数据科学整洁之道:使用 readr 进行数据导入

最近给部门内对生信感兴趣的同事科普基础知识(或者叫培训?),由于大家平时手头任务重,时间紧,那就只能介绍最实用的“干货”,本着2/8原则:学习最重要的 20% 的知识,解决 80% 的问题。大家可以参考,内容跟内部培训的差不多,只是没有 PPT。

有同学问要怎么把自己的数据读入 R,由于 tidyverse 工具套件的简单高效,是我们数据处理的优先选择。因此这里介绍tidyverse里的两个包:readrreadxl,一个读取文本文件,一个读取 Excel 文件,这两种文件是平时用得最多的。

安装

install.packages("tidyverse")

加载包

library(knitr)
library(readr)
library(readxl)

# 或者直接加载整个 tidyverse 环境: library(tidyverse)

用 readr 读/写文本文件

生信中的文本文件,大多数都是 Tab 键隔开的表格数据,可用下面两个函数来读取或者保存:

  • read_tsv,读取Tab键隔开的文本文件的内容到数据框中。

  • write_tsv,与 read_tsv 相反,将数据框中的内容保存到文本文件中。

为了演示,我们这里使用 R 自带的一个“鸢尾花”数据集: iris,该数据集有 5 列,分别是:花萼长度、花萼宽度、花瓣长度、花瓣宽度以及花的种类。

查看数据集

iris数据集默认已经加载到了内存里,先查看一下前几行内容:

kable(head(iris))
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
5.13.51.40.2setosa
4.93.01.40.2setosa
4.73.21.30.2setosa
4.63.11.50.2setosa
5.03.61.40.2setosa
5.43.91.70.4setosa

保存数据集

先把iris保存到硬盘上,后面再读入(就懒得专门去找文件读入了)。

write_tsv(iris, 'iris.tsv')

iris的内容就被保存到当前目录下的iris.tsv文件中了,文件的每一行由Tab键隔开。

读取数据集

df = read_tsv('iris.tsv')

硬盘上iris.tsv文件内的内容被读取到了df数据框中,显示一下df前几行内容:

kable(head(df))
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
5.13.51.40.2setosa
4.93.01.40.2setosa
4.73.21.30.2setosa
4.63.11.50.2setosa
5.03.61.40.2setosa
5.43.91.70.4setosa

有时候,文件每行的值是由逗号隔开的,就用:

  • read_csv

  • write_csv

用 readxl 读取 Excel 文件

如果文件内容保存在 Excel 文件中,则可以通过 readxl包中的read_excel来读入:

df = read_excel('iris.xlsx')

read_excel函数有一个很有用的参数:sheet,可以用来指定读取文件中的第几个 sheet 的内容,用法:

# 指定 sheet 的名称
df = read_excel('iris.xlsx', sheet = 'iris')  # 读取 sheet 名为 iris 的表的内容

# 指定 sheet 的位置
df = read_excel('iris.xlsx', sheet = 5)  # 读取第 5 个 sheet 的内容

有人可能要问,那要写入 Excel 文件呢,有 write_excel 函数吗?答案是没有。我们平时保存文件的时候,尽量保存为文本文件,因为文本文件是计算机程序数据共享的最佳格式,数据保存为文本格式有许多便利,特别是需要在不同程序/包中共享数据的时候。

如果真要保存为 Excel,推荐下面的包,本文就不演示了。

  • xlsx

最后小结

大多数情况下,三个函数就够了,其他文件格式的读/写确有需要的时候再查,这三个函数的使用是需要牢记于心的。

  • read_tsv

  • write_tsv

  • read_excel

这就是:学习的 2/8 法则,20%的知识,解决80%的问题

下期预告

本次分享就到这里了,下次我们再介绍另外一种重要的文件:json 文件的读写。下期内容更干哈,我会顺便介绍肿瘤的 20 条信号通路的基因怎么整理,怎么最终保存到 json文件中供以后随时调用,敬请期待。

推荐阅读

R数据科学整洁之道:使用dplyr操作数据表

粉丝福利

学生信,计算机基础一定要好。毫不夸张地说,计算机基础决定了你能否入门,而生物学修养决定你能走多远。没有出发,如何走得远?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值