0
点赞
收藏
分享

微信扫一扫

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件

获取数据

(1)R获取数据的三种途径

  • 利用键盘来输入数据;
  • 通过读取存储在外部文件上的数据;
  • 通过访问数据库系统来获取数据。

例如有以下数据:

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_读取文件

每一行称为一个观测,每一列称为一个变量。

(2)键盘输入数据:

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_读取文件_02

将每一个变量存储起来。

此外,还可以通过edit来输入数据:

首先,应该定义好变量,再用edit输入数据,不能直接输入edit来修改数据。

data2 <- data.frame(patientID=character(),admdate=character(),age=numeric(),diabetes=character(),status=character()) #定义好每个变量的数据类型。

data2 <- edit(data2) #调用edit,将edit变量定义给原变量,否则无法保存。

调用后会显示一个数据编辑器,可以直接用鼠标在编辑器里输入数据,也可直接复制粘贴,结果会保存在data2中:

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_读取文件_03

再调用fix(data2),可以继续进行数据修改。

(3)读取存储在外部文件上的数据

利用R读取的文件,最好是经过处理的适合R使用的文件。数据需要进行大量的预处理,最好先利用python进行统计,再将统计结果导入到R软件中进行分析。

具体访问方法在之后会详细讲到。

(4)访问数据库系统获取数据

通过ODBC访问数据库。ODBC是开放数据库连接Open DataBase Connectivity的简称。在R中可以通过RODBC包来连接和访问数据库。

install.packages(“RODBC”)

library(RODBC)

读入文件

(1)读取纯文本文件

read.table(file,sep,header,skip,nrows,na.strings,stringsAsFactors)#若某些部分没有要求可以直接不写。

  • file为文件名;
  • sep为文件分隔符;
  • 若文件头部为变量名称,则header为TRUE;
  • skip为跳过文件中某部分内容;
  • nrows设置读取文件行数;
  • na.strings告诉read.table函数哪部分属于缺失值,read.table函数将这部分替换为NA;
  • R在读取文件时,数字会默认都读取为数值型,但字符串会默认读取为因子类型,若不需要将字符串读取为因子类型,则可设置stringsAsFactors为FALSE;
  • …… 如: x <- read.table(“input.csv”,sep=",",header=TRUE,skip=50,nrows=200):读取文件input.csv,文件内容以逗号分隔,若文件头部为变量名称,则header为TRUE,读取文件第51行至250行。

head(x,n=10):截取文件头部十行。默认是六行。

tail(x,n=10):截取文件尾部十行。默认是六行。

read.csv(“input.csv”):直接读取csv文件,默认分隔符为逗号。

read.delim():默认分隔符为制表符。

(2) 如果一个文件并不在本机上,R还可以支持读取网络文件。

方法是将read.table函数中的文件名设置为网络文件具体的地址,其他参数不变。

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_数据_04

foreign包可以读取多种格式的数据文件,也可以生成多种格式的文件。 如果遇到其他格式的文件不再foreign包支持的范围内,那么一种方法是另存为文本文件,另外就是搜索R中对应的包。

例如要读取matlab文件: 先用RSiteSearch(“Matlab”)进行网络搜索,然后会在网页中看到,显示需要R.MATLAB这个包来读取数据。

读取系统剪切板上的数据:x <- read.table(“clipboard”)

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_分隔符_05

如果R要读取的文件是一个压缩格式的文件,那么无需解压缩,可直接读取:x <- read.table(gzfile(“input.txt.gz”))

readLines(“input.csv”,n=5):可以直接读取文件中的行数,并以字符串形式显示访问结果。

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_分隔符_06

scan函数:读取文件中指定类型的数据。(数值型或字符型或逻辑型)

R学习笔记五、获取数据、读入文件、写入文件、读写Excel文件及读写R格式文件_数据_07

写入文件

write函数与cat函数类似,只不过cat函数是将数据显示在屏幕上,而write则是写到文件里面。

如:

x <- rivers

write(x,file=“x.txt”)

如果对象是一个数据框,可以使用write.table函数,如果是写入到csv文件,则可以使用write.csv文件。

write.table(x,file,sep,row.names,quote,append,na)

  • x是需要写入的数据;
  • file是写入的文件,若没有目录,则默认写在当前工作目录下;
  • sep是指定的数据分隔符;
  • 若不需要每次数据写入文件时加上序号,则设置row.names为FALSE;
  • 默认情况下,write函数会为字符串添加双引号,若不需要,则可设置quote为FALSE;
  • append参数将文件内容写入相同文件名的文件中,TRUE表示追加到文件结尾,FALSE则表示清空原文件内容再写入;
  • na参数代表设置缺失值为NA;

注意:若写入文件是csv,则分隔符最好是逗号,可以将一个数据分为一个单元格。

R不仅支持直接读取压缩文件,也支持直接写成压缩文件。

如:

write.table(mtcars,gzfile(“newfile.txt.gz”))

表示将文件压缩为gz格式的压缩包。

读写Excel文件

简单方法:

  • 将excel文件转为csv文件读取,x<-read.csv("文件名");
  • 将excel文件数据内容复制到剪切板中读取。

但是当Excel文件过多时,上面的简单方法用起来就比较麻烦了。R中包含许多直接读取Excel文件的包:

(1)XLConnect包:

需要配置java的运行环境;

读文件:

ex <- loadWorkbook(“data.xlsx”)

edata <- readWorksheet(ex,1) #表示读取ex表格中的sheet1工作表

写文件:

1)四步

wb <- loadWorkbook(“file.xlsx”,create=T) #创建工作簿

createSheet(wb,“Sheet 1”) #创建工作表sheet1

writeWorksheet(wb,data=mtcars,sheet=“Sheet 1”) #写数据

saveWorkbook(wb) #将工作簿保存为文件

2)一步

writeWorksheetToFile(“file.xlsx”,data=mtcars,sheet=“Sheet 1”)

(2)xlsx包:

读文件:

x <- read.xlsx(“data.xlsx”,1) #表示读取表格中的sheet1工作表

写文件:

write.xlsx(x,file=“data.xlsx”,sheetName=“Sheet 1”,append=F) #将数据写入表格Sheet1中

读写R格式文件

存储为R文件会有很多优势,R会对存储为内部文件格式的数据进行自动压缩处理,并且会存储所有与待存储对象相关的R元数据。如果数据中包含了因子、日期和时间或者类的属性等信息,存储为R文件则更加实用。R格式的文件有两种:RDS和RData。

(1)RDS(R DataSet)文件:保存单个文件对象。

saveRDS(iris,file=“iris.RDS”)#iris为R中一数据集。

x <- readRDS(“iris.RDS”)

(2)RData文件:可以保存多个文件对象。

save(iris,iris3,file=“iris.Rdata”)

load(“iris.Rdata”)

举报

相关推荐

0 条评论