第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在R語言中使用SQL語句?

如何在R語言中使用SQL語句?

森林海 2018-10-02 14:10:20
如何在R語言中使用SQL語句? 
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個贊

R中還有一個有趣的sqldf包,它可以讓你用SQL來操作dataframe,這種功能能讓會R的人能練習(xí)SQL,會SQL的人能練習(xí)R,不得不感嘆R語言的強(qiáng)大技能和神奇魅力。
當(dāng)然也可以將R與外部數(shù)據(jù)庫連接,直接在R中操作數(shù)據(jù)庫,并生成最終結(jié)果,這也是一種可行的方法。在R中連接數(shù)據(jù)庫需要安裝其它的擴(kuò)展包,根據(jù)連接方式不同我們有兩種選擇:一種是ODBC方式,需要安裝RODBC包并安裝ODBC驅(qū)動。另一種是DBI方式,可以根據(jù)已經(jīng)安裝的數(shù)據(jù)庫類型來安裝相應(yīng)的驅(qū)動。因?yàn)楹笳弑A袅烁鲾?shù)據(jù)庫原本的特性,所以個人比較偏好用DBI連接方式。有下面這幾種主要的包提供了DBI連接:RMySQL,RSQLite,ROracle,RPostgreSQL。由名字看得出它們分別對應(yīng)了幾種主流的數(shù)據(jù)庫。
注:以上文字來自R-blogger—–《在R語言中使用SQL》
值得一提的是在運(yùn)用sqldf包時可能要對R軟件升級到3.1.0版以上,否則安裝不會成功,這里簡單介紹一種在Windows環(huán)境下對R軟件自動升級的方法。
Windows上升級R語言:
install.packages("installr");
library(installr) #加載包
updateR()

之后選擇“確定”就可以自動更新了
雖然在R語言中有很多優(yōu)秀的函數(shù)如aggregate()和daply()可以對數(shù)據(jù)框統(tǒng)計(jì),但sql功能強(qiáng)大,不僅能實(shí)現(xiàn)數(shù)據(jù)的清洗、統(tǒng)計(jì)、運(yùn)算,還可以實(shí)現(xiàn)數(shù)據(jù)存儲、控制、定義和調(diào)用。越來越多的公司在招聘的時候都要求數(shù)據(jù)分析師除了要掌握統(tǒng)計(jì)建模和數(shù)據(jù)挖掘的理論方法和編程能力外,還要求其具備使用sql的能力,樓主也在積極學(xué)習(xí)sql當(dāng)中。
下面是我利用sqldf()完成的一些程序,雖然簡單,但這是學(xué)習(xí)的第一步
> name<-c(rep('張三',1,3),rep('李四',3))
> subject<-c('數(shù)學(xué)','語文','英語','數(shù)學(xué)','語文','英語')
> score<-c(89,80,70,90,70,80)
> stuid<-c(1,1,1,2,2,2)
> stuscore<-data.frame(name,subject,score,stuid)
> library(sqldf)

1.計(jì)算每個人的總成績并排名(要求顯示字段:姓名,總成績)
> sqldf('select name,sum(score) as allscore from stuscore group by name order by allscore')
name allscore
1 張三 239
2 李四 240

2.計(jì)算每個人的總成績并排名(要求顯示字段: 學(xué)號,姓名,總成績)
> sqldf('select name,stuid,sum(score) as allscore from stuscore group by name order by allscore')
name stuid allscore
1 張三 1 239
2 李四 2 240

3.計(jì)算每個人單科的最高成績(要求顯示字段: 學(xué)號,姓名,課程,最高成績)
> sqldf('select stuid,name,subject, max(score) as maxscore from stuscore group by stuid')
stuid name subject maxscore
1 1 張三 數(shù)學(xué) 89
2 2 李四 數(shù)學(xué) 90

4.計(jì)算每個人的平均成績(要求顯示字段: 學(xué)號,姓名,平均成績)
> sqldf('select stuid,name,subject, avg(score) as avgscore from stuscore group by stuid')
stuid name subject avgscore
1 1 張三 英語 79.66667
2 2 李四 英語 80.00000

5.列出各門課程成績最好的學(xué)生(要求顯示字段: 學(xué)號,姓名,科目,成績)
> sqldf('select stuid,name,subject,max(score) as maxscore from stuscore group by subject order by stuid')
stuid name subject maxscore
1 1 張三 語文 80
2 2 李四 數(shù)學(xué) 90
3 2 李四 英語 80

8.列出各門課程的平均成績(要求顯示字段:課程,平均成績)
> sqldf('select subject,avg(score) as avgscore from stuscore group by subject')
subject avgscore
1 數(shù)學(xué) 89.5
2 英語 75.0
3 語文 75.0

查看完整回答
反對 回復(fù) 2018-10-22
  • 1 回答
  • 0 關(guān)注
  • 2279 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號