文件操作

2022-10-25 19:45:04 浏览数 (2)

背景

一般情况下我们需要分析的数据都是存储在文件中,那么利用 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

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

0 人点赞