數據源
- 文本格式
- 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))