r語言集合補集 小試牛刀 用SQL玩轉R資料框

2021-10-14 06:11:43 字數 3787 閱讀 7395

技多不壓身,跨界融合更是對十八般武藝的一種考驗,sql是一種技能,一樣可以在r的舞台上展示獨特的魅力,一起看看sql處理資料的長袖有怎麼樣的舞藝。

1,介紹主角

sql 是結構化查詢語句,是一種資料庫查詢和程式語言。資料分析從業者的主要技能之一,普及程度不低於r語言。當我們用r語言處理資料:檢索,排序,篩選的時候怎覺得力不從心。怎樣用sql來處理r中的資料呢?用sql的優勢來武裝r的資料處理更能錦上添花,魚和熊掌兼得。當然我們可以引用r中的sqldf包,讓sql在r飛起,處理資料就這麼簡單。

2,打造乙個舞台

從簡單的資料來探索有趣的知識,用r組合出關於學生的資料框(student_dframe),比如學號-sid,性別-***,年齡-age,班級-class,成績等級-level:

3,sql vs r的常用舞藝

#sql:表示sql語法,#r:表示r語法。對比二者同結果操作的不同之處,在比較中提公升學習的效率。time is money!!!

一定要安裝的包

library(dplyr)library(sqldf)library(data.table)library(ggplot2)library(compare)library(plotrix)
3.1,count計數#sql:sqldf(" select count(sid) as 'number of rows' from student_dframe; ")

#r:nrow(student_dframe)

輸出結果為:6

3.2,limit 取部分行,前三行

#sql :sqldf("select * from student_dframe limit 3;")

#r:head(student_dframe, 3)

輸出結果:

3.3,where 過濾資料

sql2=sqldf("select * from student_dframe where *** ='男';")

r2 = filter(student_dframe, ***=="男") identical(sql2, r2)

輸出結果:

sql3 = sqldf("select ***, count(sid) as total from student_dframe where *** in ('男','女') group by *** order by total desc ;")

r3=student_dframe%>%filter(*** %in%c('f','m','ns','unk'))%>%group_by(***) %>% summarise(total = n())%>%arrange(desc(total))

輸出結果:

我們需要在建立乙個學生姓名的資料框:

輸出結果:

3.6,union all 取兩個集合的交集

student_dframe1

r5 sql5

輸出結果:

3.7,intersect 取兩個集合的交集

student_dframe1

r6 sql6

輸出結果:

3.8,except 取兩個集合的補集

r7 sql7

輸出結果:

4,sql資料視覺化

sql對r資料框檢索,排序,篩選後的資料結果依然是乙個資料框,這麼我們也可以直接作圖,讓資料視覺化。

sql = sqldf("select ***, count(sid) as total from student_dframe where *** in ('男','女') group by *** order by total desc ;")

sql$total=as.numeric(sql$total)

pie(sql$total, labels =sql$***,explode=0.1,col=rainbow(4), main="性別分布餅圖",cex.lab=0.5, cex.axis=0.5, cex.main=1,labelcex=1, family='simsun')

ggplot(sqldf('select age, *** from student_dframe where age between 0 and 100 ;'),aes(x=age, fill = ***), family='simsun')+ geom_density(alpha = 0.6)

ggplot(sqldf('select age, *** from student_dframe

union all select age, *** from student_dframe1

union all select age, *** from student_dframe1

union all select age, *** from student_dframe1 '), aes(x=age, fill = ***), family='simsun')+geom_bar(alpha=0.6)

最後,中國加油,武漢加油,一起加油

r語言集合補集 R語言使用的一些注意事項

獲得幫助的三種途徑 1 help 獲得方法的文件解釋 2 example 獲得方法的樣例 3 help.search 模糊搜尋,搜尋自己想要的功能,r會返回相關結果 儘管變數的資料型別無需在使用前宣告,但在沒有宣告變數的儲存方式之前,直接通過下標的方式對其賦值是會有錯誤的。比如x 1 vector會...

R語言學習筆記 小試R環境

買了三本r語言的書,同時使用來學習r語言,粗略翻下來感覺第一本最好 r語言程式設計藝術 the art of r programming r語言初學者使用 a beginner s guide to r r語言實戰 r in action 一句話簡介r語言 r是一種用於資料處理和統計分析的指令碼語言...

R語言學習筆記 小試R環境

買了三本r語言的書,同時使用來學習r語言,粗略翻下來感覺第一本最好 r語言程式設計藝術 the art of r programming r語言初學者使用 a beginner s guide to r r語言實戰 r in action 一句話簡介r語言 r是一種用於資料處理和統計分析的指令碼語言...