數據處理及分析-讀取MySQL資料庫
- 讀取數據
#install.packages("RMySQL")library(RMySQL)conn <- dbConnect(MySQL(),dbname="web",username="root",password="123456",host="127.0.0.1",port=3306)dbSendQuery(conn, SET NAMES utf8)houData <- dbReadTable(conn,"hou_info")dbDisconnect(conn)#houData <- sqlQuery(conn,"select * from hou_info")
使用dbConnect方法初始化一個連接,填寫dbname(資料庫名),username(用戶名),password(密碼),host(資料庫地址),port(du)
dbReadTable方法,讀取了hou_info表的數據,同樣可以使用sqlQuery方法,通過SQL查詢數據
註:這裡使用dbSendQuery方法,設置查詢輸入未utf8格式,避免中文亂碼,查詢完數據後使用dbDisconnect關閉連接,不然若運行多次後會報「Cannot allocate a new connection: 16 connections already opened」錯誤
- 數據處理
這裡我是抓取了武漢2011年12月到2017年2月的房屋成交量數據作為分析,格式如下:
統計需求:
1)每月總成交量統計
houData$date <- as.Date(houData$date, "%Y-%m-%d")houData <- houData[order(houData$date,decreasing = FALSE),]hjData <- houData[houData$area == 合計,]hjData$hou_num <- as.numeric(hjData$hou_num)#月成交量houMonth <- tapply(hjData$hou_num,format(hjData$date,%Y-%m),sum)houMonth <- as.data.frame.table(houMonth)names(houMonth) <- c("time","totalNum")houMonth$time <- as.character(houMonth$time)houMonth$timeNumber <- c(1:nrow(houMonth))
將日期格式化,並通過時間排序
hjData <- houData[houData$area == 合計,]表示我過濾出每天的合計總量
下面我就可以按月來分組,獲取每個月份的商品房交易量,將數據轉換為數據框,並命名行名,列名
好了可以開始繪製圖表了
par(family=STKaiti)plot(houMonth$timeNumber,houMonth$totalNum, xlab = "時間(月份)", ylab = "成交量", xaxt = "n", main = "2011年12月到2017年2月成交量統計", col = "blue", type = "b")axis(1, at=houMonth$timeNumber,labels = houMonth$time, cex.axis=1.5)
這裡使用到了par函數,避免中文字元亂碼,使用plot畫圖,使用axis自定義橫坐標,用法可參考《數據處理及分析-讀寫Excel》,標題和坐標文本也可以使用title函數來添加,如:
title("2011年12月到2017年2月成交量統計",xlab = "時間(月份)",ylab = "成交量")
統計了江岸區和江漢區兩個地區的對比情況
獲取數據同「合計」部分,繪製多條曲線,使lines,即在原來的圖表上新增一條曲線,橫坐標是不變的
lty函數表示使用虛線
lines(jahouMonth$timeNumber,jhhouMonth$totalNum,col="green",type="b",lty=2);
也可以為圖表添加圖例
legend("topleft",inset = .05,title = "地區",c("江岸區","江漢區"), lty = c(1,2), pch = c(16,1),col = c("blue","green"))
因為是兩個圖形,所以lty,pch,col都是以向量來表示,
legend用法:
legend(location,title,legend,...)
結果展示:
推薦閱讀:
※Infovis的圖形推理(譯)
※別落後了,開始你的第一方數據分析
※做數據分析需要「搞」人?
※Kaggle泰坦尼克號生存模型——250個特徵量的融合模型,排名8%
※數據分析怎麼更直觀?十分鐘構建數據看板