數(shù)據(jù)源
- 文本格式
- Excel格式
- 數(shù)據(jù)庫
-
剪切板
read.table("clipboard",header=T)
1. 文本格式
- read.table() 即是以數(shù)據(jù)框的格式在R中讀取數(shù)據(jù),可以直接讀取txt文件。
- read.csv() 與read.table函數(shù)類似,可以直接讀取csv文件和txt文件。
- data.table的fread() 比常規(guī)的read.table或者read.csv效率更高。
read.table(tf, fill = TRUE, header = T)
read.csv(tf, fill = TRUE, header = T)
2. Excel格式
先寫結(jié)論穷蛹,讀取Excel的最好方法:另存為CSV格式后讀取
主要參考尾巴AR的R語言學(xué)習(xí)筆記之: 論如何正確把EXCEL文件喂給R處理
2.1 xlsx包
首先配置java環(huán)境肴熏,加載rJava包,再加載xlsxjars包和xlsx包鸦做。
- 安裝最新版本的java。
- 在R中加載環(huán)境馁龟,即一行代碼,路徑要依據(jù)你的java版本做出更改漆魔。
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_45\\')
2.2 用VBA把xlsx批量轉(zhuǎn)化為csv格式
在上面的嘗試已經(jīng)發(fā)現(xiàn)坷檩,xlsx本身就是這個復(fù)雜問題的最根本原因。與之相反改抡,R對csv等文本格式支持的很好矢炼,而且有fread這個神器,要處理一定量級的數(shù)據(jù)阿纤,還是得把xlsx轉(zhuǎn)化為csv格式句灌。
以此為思路,在參考了兩個資料后欠拾,我成功改寫了一段VBA胰锌,可以選中需要的xlsx,然后在其目錄下新建csv文件夾藐窄,把xlsx批量轉(zhuǎn)化為csv格式
2.3 剪切板
如果excel文件很小资昧、很干凈,可臨時采用剪切板的方式荆忍。
read.table("clipboard",header=T)
3. 數(shù)據(jù)庫
- ACCESS
- MYSQL
3.1 ACCESS
3.1.1 連接數(shù)據(jù)庫
odbcConnect(dsn, uid = "", pwd = "", ...)
library(RODBC)
# datasource為已配制好的本地數(shù)據(jù)源
channel <- odbcConnect("datasource")
也可以先不配置ODBC源格带,直接用odbcConnectAccess()
channel <- odbcConnectAccess("AccessFile.mdb")
#odbcConnectAccess只能用于32位windows系統(tǒng),64位的可以嘗試odbcConnectAccess2007()
channel <- odbcConnectAccess2007("AccessFile.accdb")
3.1.2 讀取數(shù)據(jù)
向數(shù)據(jù)庫提交查詢刹枉,并返回結(jié)果叽唱。
sqlQuery(channel, query, errors = TRUE, ..., rows_at_time)
myquery <- "select * from testtable"
mydata <- sqlQuery(channel, myquery)
#對于日常的統(tǒng)計口徑可以講select、where和group等模塊化
myselect <- "select State, Murder from USArrests"
mywhere <- "where Rape > 30 order by Murder"
mydata1 <- sqlQuery(channel, paste(myselect,mywhere))