LearningR-读取数据

数据源

  • 文本格式
  • 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包。

  1. 安装最新版本的java。
  2. 在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))

你可能感兴趣的:(LearningR-读取数据)