这一节介绍数据的读入和写入,要在R中做数据分析,首先需要将相关的数据读入,读入的方法多种多样,即使同一个文件,加载不同的包都有不同的读入方法,这里介绍一些比较常见的。
直接编辑
可以通过直接输入的方式输入数据,编辑的对象是数据框,如:
data1<-data.frame(1,2,2) fix(data1)
这里的fix函数是打开表格,你就可以直接输入数据,打开的操作界面如下:
然后我们在第二行第一列直接输入一个数据3,然后点击关闭
然后再打开,可以看到数据3已经在里面了:
还有另一个很类似的是edit,这个是编辑变量的名称和类型
粘贴板中读入
这个是表示已经将数据复制了,这时候是存储在内存里面,通过read.table中clipboard读入的,例如你复制了一个excel表格数据,然后运行如下代码:
data2<-read.table("clipboard", header = T,sep = '\t') head(data2)
然后你在用head(data2)看一下数据的格式有没问题,现在Rstudio已经能够完美支持中文的了,三四年前读入中文还是乱码的。
read.table的功能很强大,具体在后面再详细介绍。
外部文件
前面两种能读入的数据量级和效率是比较糟糕的,通常在分析的时候是读入外部文件和直接连接数据库去处理数据,下面介绍读入外部文件的,对于数据的外部文件格式有很多,下面只介绍比较常用的几种。
csv
这个一种很常见的数据文件格式,很多API导出都会通过这种格式保存,或是部分人在处理数据的时候,会现在excel做数据的清理工作,然后保存为csv,再通过分析工具读入去做分析建模工作。
csv格式的读入很简单,如
data3<-read.csv("D:\\data\\1.csv",header = T)
这里需要特别注意,在window下面用R的,所以路径数\\。Linux下我没用过,所以不知道。
txt
txt的文件也是用read.csv,如
data3<-read.table("D:\\data\\1.txt",header = F)
read.table除了前面出现的header和sep参数外,还有其他很多的参数,这些参数可以帮助你准确导入你想要的数据,read.table使用格式是这样的:
read.table(file, header = FALSE, sep ="", quote = "\"'", dec = ".", row.names,col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows= -1, skip = 0, check.names = TRUE, fill =!blank.lines.skip, strip.white = FALSE, blank.lines.skip =TRUE, comment.char = "#", allowEscapes = FALSE, flush =FALSE, stringsAsFactors =default.stringsAsFactors(), fileEncoding = "", encoding = "unknown",text)
xlsx
读入xlsx需要下加载xlsx包,如果没有这个包的请自行安装,这个包的使用会依赖rJava和xlsxjars,所以这两个也是要安装的,还要有java的环境,用法如:
library(xlsx) data4<-read.xlsx("D:\\data\\file.xlsx",sheetIndex=1,header=TRUE)
sheetIndex用来选择读取的sheet表格
数据库
在这里以连接MySQL为例子,我用的报R包是RMysQL,这个包使用比较方便,不用做其他设置,如果你用RODBC,那么你还需要做数据源配置,比较麻烦,RMySQL的用法是:
library(RMySQL) mycon<-dbConnect(MySQL(),dbname="world",username="root",password="123456",host="127.0.0.1",port=3306) #连接数据库,注意这里是连接到特定的库 dbListTables(mycon) #看看这个库有什么表 res<-dbSendQuery(mycon, "SELECT *FROM city") #查询出数据 data <-dbFetch(res) #加载到数据框
这要数据就加载到数据框了。
数据输出
文件保存方面,我一般是将数据保存为csv,特别是在运营分析,项目分析中,这些分析周期是比较短的,如果开发一个BI的功能,显然是没有必要的,但是短期又需要定期做一些数据处理工作,分析数据情况,这时候R是个不错的选择,点击运行,然后就坐等结果出来了,保存数据的用法如:
write.csv(data,file="D:/shibai0711.csv")
下一节介绍常用的数据切片操作