R套件(Package)的資源非常豐富,截自2016-06-18已經有8,195個R包可以下載,安裝完R Service(In-DataBase R)之後,
會有基本內建的R包,但許多常用的R包則需要額外下載及安裝,這篇來筆記R包的安裝。
截自2016-06-18 R包的套件數:
在R Console、R Studio、R Tool For Visual Studio,安裝R包只要一條指令install.packages("R包名稱"),工具就會自動下載及安裝,
撰寫R Script就可以載入library("R包名稱"),那麼R Service?
1.我們來試試2013-01~05 月R包兵器下載排行榜第一名的plyr
2.首先在R Script製作出一個Data frame,假設資料行有國家名、人口數及FIFA世界足協男子組分數。
測試資料取歐洲五大聯賽所在的國家抽樣(西甲、英超、法甲、德甲、義甲),假設過去1年,每個國家都增加了100萬人。
execute sp_execute_external_script
@language = N'R'
, @script = N'
country <- c("France","Germany","Spain","England","Italy","France","Germany","Spain","England","Italy");
year <- c(2016,2016,2016,2016,2016,2015,2015,2015,2015,2015);
population <- c(6500,8221,4666,6111,5933,6400,8121,4566,6011,5833);
FIFAScore <- c(925,1310,1267,1069,982,907,1277,1309,1016,959);
OutputDataSet <- data.frame(country,population,year,FIFAScore)'
, @input_data_1 = N''
WITH RESULT SETS (([country] varchar(20) NOT NULL,[population] int,[year] int,[FIFAScore] int));
輸出執行結果:
利用data frame把4組資料合併起來。
3.我們想利用plyr裡頭的ddply分組統計計算人口增長與足球成績相關係數(Correlation coefficient)
execute sp_execute_external_script
@language = N'R'
, @script = N'
library("plyr")
country <- c("France","Germany","Spain","England","Italy","France","Germany","Spain","England","Italy");
year <- c(2016,2016,2016,2016,2016,2015,2015,2015,2015,2015);
population <- c(6500,8221,4666,6111,5933,6400,8121,4566,6011,5833);
FIFAScore <- c(925,1310,1267,1069,982,907,1277,1309,1016,959);
d <- data.frame(country,population,year,FIFAScore)
OutputDataSet <- ddply(d, c("country"), function(df) cor(df$FIFAScore,df$population));
'
, @input_data_1 = N''
WITH RESULT SETS (([Country] nvarchar(20) NOT NULL,[Cor] numeric(6,3)));
結果出現了以下訊息:
訊息 39004,層級 16,狀態 20,行 0
執行 'sp_execute_external_script' 時發生 'R' 指令碼錯誤,HRESULT 為 0x80004004。
訊息 39019,層級 16,狀態 1,行 0
發生外部指令碼錯誤:
Error in library("plyr") : there is no package called 'plyr'
Calls: source -> withVisible -> eval -> eval -> library
4.如何在R Service 安裝R包? 查MSDN
Install Additional R Packages on SQL Server
這邊我們選用R command-line utilities的方式
a.在安裝SQL Server R SERVICE的目錄中找到Rgui執行程式,按下右鍵以系統管理員身份執行。
C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\R_SERVICES\bin\x64
(SQL2016是Instance的名稱)
b.輸入以下R script
將library目錄丟進lib.SQL變數,然後安裝R包時指定安裝到此目錄。
這個目錄必須要R Service所在的目錄喔!!
lib.SQL <- "C:\\Program Files\\Microsoft SQL Server\\MSSQL13.SQL2016\\R_SERVICES\\library"
install.packages("plyr",lib=lib.SQL)
Console上的訊息顯示已經下載並安裝成功
c.查詢R package Library目錄
4.重新執行以下剛剛相關係數的語法
可以正確載入plyr library並且執行了!!!
由於西班牙在2016的成績相較2015是退步的,但各國的人口都增加了100萬,可以發現除了西班牙,其他國家都是正相關。
小結:
- 最佳資料的來源: 透過T-SQL語法將資料表的資料讀出輸入到@input_data_1
例如像是 @input_data_1 = N'SELECT * FROM Sales.Customer',下一篇筆記。
- FIFA成績和人口增長應該沒有必然的關係啦。
- 冰島人口30萬人,FIFA排名34。
歐國盃小組賽,西班牙早上3:0 擊敗土耳其!!
掛上國旗來慶祝!!
參考:
Top 100 R packages for 2013 (Jan-May)!
Install Additional R Packages on SQL Server