技多不壓身,跨界融合更是對十八般武藝的一種考驗,SQL是一種技能,一樣可以在R的舞台上展示獨特的魅力,一起看看SQL處理數據的長袖有怎麽樣的舞藝。
1,介紹主角
SQL 是結構化查詢語句,是一種數據庫查詢和程序設計語言。數據分析從業者的主要技能之一,普及程度不低于R語言。當我們用R語言處理數據:檢索,排序,篩選的時候怎覺得力不從心。怎樣用SQL來處理R中的數據呢?用SQL的優勢來武裝R的數據處理更能錦上添花,魚和熊掌兼得。當然我們可以引用R中的sqldf包,讓SQL在R飛起,處理數據就這麽簡單。
2,打造一個舞台
從簡單的數據來探索有趣的知識,用R組合出關于學生的數據框(student_dframe),比如學號-sid,性別-sex,年齡-age,班級-class,成績等級-level:
code—
sid<-c(1,2,3,4,5,6) sex<-c(‘男’, ‘女’,’男’, ‘女’,’男’, ‘女’)
age<-c(18,24,45,18,19,22)
class<-c(‘class1’, ‘class1’, ‘class2′,’class2’, ‘class3’, ‘class3’)
level<-c(‘Poor’, ‘Improved’, ‘Excellent’, ‘Poor’, ‘Improved’, ‘Excellent’)
student_dframe <- data.frame(sid, sex, age, class,level)
3.3,WHERE 過濾數據
SQL2=sqldf(“SELECT * FROM student_dframe WHERE sex =’男’;”)
R2 = filter(student_dframe, sex==”男”) identical(SQL2, R2)
輸出結果:
3.5,Inner Join 集合合並–添加列
我們需要在創建一個學生姓名的數據框:
code—
sid<-c(1,2,3,4,5,6) # 學號一樣
sname<-c(‘張三’, ‘李四’, ‘王二’, ‘狗蛋’, ‘毛線’, ‘喬布斯’)
student_name <- data.frame(sid, sname)
3.6,UNION ALL 取兩個集合的交集
student_dframe1<-student_dframe[1:3,] #重複利用數據框 前3行
R5 <- rbind(student_dframe, student_dframe1)
SQL5 <- sqldf(“SELECT * FROM student_dframe UNION ALL SELECT * FROM student_dframe1;”) compare(R5,SQL5, allowAll = TRUE)
輸出結果:
3.8,EXCEPT 取兩個集合的補集
R7 <- anti_join(student_dframe, student_dframe1)
SQL7 <- sqldf(“SELECT * FROM student_dframe EXCEPT SELECT * FROM student_dframe1;”) compare(R7,SQL7, allowAll = TRUE)
輸出結果:
ggplot(sqldf(‘SELECT age, sex FROM student_dframe WHERE age between 0 AND 100 ;’),aes(x=age, fill = sex), family=’SimSun’)+ geom_density(alpha = 0.6)
期待能夠在我的下一個文章遇到你,如果你有什麽疑問或者反饋,你可以掃碼關注公衆號,通過私信給我留言,我會第一時間給你答複。
最後,中國加油,武漢加油,一起加油