1. 获取数据
(1)R获取数据的三种途径
- 利用键盘来输入数据;
- 通过读取存储在外部文件上的数据;
- 通过访问数据库系统来获取数据。
例如有以下数据:
(2)键盘输入数据:
此外,还可以通过edit来输入数据:
data2 <- data.frame(patientID=character(),admdate=character(),age=numeric(),diabetes=character(),status=character()) #定义数据类型
data2 <- edit(data2) #调用edit
调用后会显示一个数据编辑器,可以直接在编辑器里输入数据,结果会保存在data2中:
再调用fix(data2),可以继续进行数据修改。
(3)读取存储在外部文件上的数据
利用R读取的文件,最好是经过处理的适合R使用的文件。数据需要进行大量的预处理,最好先利用python进行统计,再将统计结果导入到R软件中进行分析。
具体访问方法在之后会详细讲到。
(4)访问数据库系统获取数据
通过ODBC访问数据库。ODBC是开放数据库连接Open DataBase Connectivity的简称。在R中可以通过RODBC包来连接和访问数据库。
install.packages(“RODBC”)
library(RODBC)
2.读入文件
(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函数中的文件名设置为网络文件具体的地址。
foreign包可以读取多种格式的数据文件,也可以生成多种格式的文件。
如果遇到其他格式的文件不再foreign包支持的范围内,那么一种方法是另存为文本文件,另外就是搜索R中对应的包。
例如要读取matlab文件:
先用RSiteSearch(“Matlab”)进行网络搜索,然后会在网页中看到,显示需要R.MATLAB这个包来读取数据。
读取系统剪切板上的数据:x <- read.table(“clipboard”)
如果R要读取的文件是一个压缩格式的文件,那么无需解压缩,可直接读取:x <- read.table(gzfile(“input.txt.gz”))
readLines(“input.csv”,n=5):可以直接读取文件中的行数。
scan函数:读取文件中指定类型的数据。(数值型或字符型或逻辑型)
3.写入文件
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格式的压缩包。
4.读写Excel文件
简单方法:
- 将excel文件转为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中
5.读写R格式文件
存储为R文件会有很多优势,R会对存储为内部文件格式的数据进行自动压缩处理,并且会存储所有与待存储对象相关的R元数据。如果数据中包含了因子、日期和时间或者类的属性等信息,存储为R文件则更加实用。R格式的文件有两种:RDS和RData。
(1)RDS(R DataSet)文件
saveRDS(iris,file=“iris.RDS”)
x <- readRDS(“iris.RDS”)
(2)RData文件
save(iris,iris3,file=“iris.Rdata”)
load(“iris.Rdata”)