LearningR-读取数据
2016-05-17 本文已影响86人
JeevanYue
数据源
- 文本格式
- Excel格式
- 数据库
-
剪切板
read.table("clipboard",header=T)
1. 文本格式
- read.table() 即是以数据框的格式在R中读取数据,可以直接读取txt文件。
- read.csv() 与read.table函数类似,可以直接读取csv文件和txt文件。
- data.table的fread() 比常规的read.table或者read.csv效率更高。
read.table(tf, fill = TRUE, header = T)
read.csv(tf, fill = TRUE, header = T)
2. Excel格式
先写结论,读取Excel的最好方法:另存为CSV格式后读取
主要参考尾巴AR的R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
2.1 xlsx包
首先配置java环境,加载rJava包,再加载xlsxjars包和xlsx包。
- 安装最新版本的java。
- 在R中加载环境,即一行代码,路径要依据你的java版本做出更改。
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_45\\')
2.2 用VBA把xlsx批量转化为csv格式
在上面的尝试已经发现,xlsx本身就是这个复杂问题的最根本原因。与之相反,R对csv等文本格式支持的很好,而且有fread这个神器,要处理一定量级的数据,还是得把xlsx转化为csv格式。
以此为思路,在参考了两个资料后,我成功改写了一段VBA,可以选中需要的xlsx,然后在其目录下新建csv文件夹,把xlsx批量转化为csv格式
2.3 剪切板
如果excel文件很小、很干净,可临时采用剪切板的方式。
read.table("clipboard",header=T)
3. 数据库
- ACCESS
- MYSQL
3.1 ACCESS
3.1.1 连接数据库
odbcConnect(dsn, uid = "", pwd = "", ...)
library(RODBC)
# datasource为已配制好的本地数据源
channel <- odbcConnect("datasource")
也可以先不配置ODBC源,直接用odbcConnectAccess()
channel <- odbcConnectAccess("AccessFile.mdb")
#odbcConnectAccess只能用于32位windows系统,64位的可以尝试odbcConnectAccess2007()
channel <- odbcConnectAccess2007("AccessFile.accdb")
3.1.2 读取数据
向数据库提交查询,并返回结果。
sqlQuery(channel, query, errors = TRUE, ..., rows_at_time)
myquery <- "select * from testtable"
mydata <- sqlQuery(channel, myquery)
#对于日常的统计口径可以讲select、where和group等模块化
myselect <- "select State, Murder from USArrests"
mywhere <- "where Rape > 30 order by Murder"
mydata1 <- sqlQuery(channel, paste(myselect,mywhere))