前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件操作

文件操作

作者头像
生信喵实验柴
发布2022-10-25 19:45:04
2.7K0
发布2022-10-25 19:45:04
举报
文章被收录于专栏:生信喵实验柴生信喵实验柴

背景

一般情况下我们需要分析的数据都是存储在文件中,那么利用 R 分析数据的第一步就是将输入读入 R 语言。如果分析的数据是记录在纸质载体上,还需要将数据手动录入,然后保存为一个文件。在 R 中分析文件一般是文件文件,通常是以逗号分隔的 csv 文件,如果数据本身包含逗号,就需要使用制表符 tab 分隔的文件。有些情况下还有需要处理其他统计软件生成的文件,例如 Excel 生成的 xlsx 格式文件等。R 可以很方便地读写多种格式文件。

一、文件类型

1、csv

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV 文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。

代码语言:javascript
复制
name,age
张三,20
李四,30

2、tsv

TSV:tab separated values;即“制表符分隔值”,如:

代码语言:javascript
复制
name age
张三 20
李四 30

二、Rstudio 导入文件

data :文件路径

header :第一行是否作为表头

sep :分隔符

row.names:哪一列作为行名

stringsAsFactors:字符串是否作为因子

na.strings :空值用什么表示

三、函数读入文件

在 Rstudio 中,可以通过点击鼠标读入文件,在读入文件之前,需要对文件格式和内容有所了解。例如文件是否是一个标准的列表形式,也就是是否为结构化数据。文件存储格式,是二进制还是纯文本,如果是纯文本,文件扩展名是什么?用什么分隔符分割?文件有多少行,多少列?第一行是否为列名,第一列是否为行名?清楚了这些之后就可以读入文件了。

R提供了大量读入文件的函数,这些函数通常是以read.*开头,后面接文件扩展,例如read.csv,read.xlsx,read.spss 等。其中最常用的为 read.table。read.table 包括以下重要选项参数。

1、data:后面接文件路径,注意文件路径一定要加引号,注意 windows 系统文件路径的写法。

2、header:只接逻辑值 TRUE 或者 FALSE,代表第一行是否作为表头,默认为 FALSE。如果不设置,R 会默认添加 V1,V2 等作为列名。

3、sep:分隔符,读入文件最重要的一个选项,如果设置错误,文件格式很乱,通常就是逗号“,”,制表符“\t”或者冒号“:”等。

4、row.names:后面接数字,指定哪一列作为行名,默认是 0,通常可以设置为 1。

5、stringsAsFactors:后面接逻辑值,R 语言默认会将文件中的字符串自动转换为因子,如果不想这么做,可以设置为 F。

6、na.strings:后面接字符串,指定文件中空值的表示方法。

代码语言:javascript
复制
#查看当前目录下文件
dir()
#读入一个文件,存入 x 变量
x <- read.table("Rdata/CountMatrix.csv")
#读入文件,指定分隔符
x <- read.table(file = "CountMatrix.csv",header = T,sep = ",")
#读入文件,指定分隔符和列名
x <- read.csv(file = "CountMatrix.csv",header = T,row.names = 1)
#读入文件,指定分隔符、表头与行名以及字符串不作为因子
x <- read.csv(file = "Rdata/CountMatrix.csv",header = T,sep = ",",row.names =
1,na.strings = "NA",stringsAsFactors = F)

无论使用哪个函数读取文件,R 中读入的数据都存储为数据框这种数据类型。通常将文件保存为一个变量。读入文件之后,需要验证文件是否读入成功,通常使用 head 函数截取文件头部显示出来,判断格式是否正确,在 Rstudio 中也可以使用 View()函数将全部内容显示出来。如果格式不正确就需要修改命令重新读取文件;如果没有问题,就可以对数据进行后续的分析了。

代码语言:javascript
复制
#查看数据结构
class(dta)
#查看文件头部
head(dta)
#查看文件尾部
tail(dta)
#查看行名,列名
rownames(dta)
colnames(dta)
#View 窗口中查看数据
View(dta)
#查看数据属性信息
str(dta)

四、函数写入文件

数据处理结束之后,需要将存储在变量中的结果保存到文件中,R 提供了大量写入文件的函数,这些函数通常与 read 系列都是对应的,用法也类似使用起来也并不难。

代码语言:javascript
复制
#写入文件
write.csv(x = dta,file = "matrix.csv",sep = ",",append = F)

x:要写入文件中的数据集名字。

File:文件路径和文件名,注意加引号,需要自己给文件命名,注意扩展名最好与分隔符匹配。

sep:分隔符,如果是 csv 文件,sep 设置为逗号,制表符分割,则设置为“\t”

append:接逻辑值,是否追加写入。

五、读写 excel 文件

Excel 是全球最流行的电子表格程序,即使你可以使用 R 语言处理所有的数据分析工作,但是总有一天你不得不处理别人传给你 Excel 生成的电子表格需要你帮忙处理。还好 R 可以很方便地处理 excel 的电子表格。

通常处理 Excel 表格有两种方法。

方法一:使用excel先打开,另存为 csv 或者 tsv,再去R。

方法二:readr,xlsx,openxlsx 等包

R 中有大量可以读写 Excel 电子表格的包,使用方法与 read.table()函数类似,只需注意Excel 的电子表格分为工作簿与工作表,一个工作簿中包含多个工作表(sheet),因此需要指定读取工作簿中那个工作表,可以指定工作表的名字,也可以使用顺序号。

代码语言:javascript
复制
#安装 openxlsx 包
install.packages("openxlsx")
#加载 openxlsx 包
library(openxlsx)
#读入 excel 文件,指定 sheet 号
x <- read.xlsx(file = "vlookup.xlsx",sheetIndex = 1,header = T)
#写入 Excel 文件,设置 sheet 名
write.xlsx(x = x,sheetName = "dta",file = "dta.xlsx",append = F)

六、其他 R 数据格式

除了常规各种文本表格之外,R 还提供了两种文件格式,分别是 RDS 与 Rdata 格式。RDS可以用来存储单个数据集,Rdata 可以存储多个 R 数据集。R 内置格式的好处是对 R 软件支持更好,便于分享,且内置压缩算法,同样的数据内容,文件更小,便于传输。

代码语言:javascript
复制
?iris
head(iris)
getwd()
dir()
saveRDS(iris,file="iris.RDS")
rdsdata <- readRDS("iris.RDS")
#Write RData file
y <- mtcars
save(iris,y,file = "iris.Rda")
load('iris.Rda')
save.image()

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。

代码语言:javascript
复制
sx.voiceclouds.cn

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信喵实验柴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档