你好,欢迎访问远方教程PC版!
广告位招租

R技巧[40]:在R语言中使用SQL语句

[日期:2019-08-27]   来源:远方教程  作者:远方教程   阅读:143次[字体: ] 访问[旧版]
 捐赠远方教程 

        R中还有一个有趣的sqldf包,它可以让你用SQL来操作dataframe,这种功能能让会R的人能练习SQL,会SQL的人能练习R,不得不感叹R语言的强大技能和神奇魅力。值得一提的是在运用sqldf包时可能要对R软件升级到3.1.0版以上,否则安装不会成功。

       越来越多的公司在招聘的时候都要求数据分析师除了要掌握统计建模和数据挖掘的理论方法和编程能力外,还要求其具备使用sql的能力。下面是我利用sqldf()完成的一些程序,虽然简单,但这是学习的第一步。

library(sqldf)
name<-c(rep('张三',1,3),rep('李四',3))
subject<-c('数学','语文','英语','数学','语文','英语')
score<-c(89,80,70,90,70,80)
stuid<-c(1,1,1,2,2,2)
stuscore<-data.frame(name,subject,score,stuid)

在R语言中使用SQL语句-远方教程

下面进行一些SQL基本练习

 1.计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)

> sqldf('select name,sum(score) as allscore from stuscore group by name order by allscore')

name allscore
1 张三 239
2 李四 240

2.计算每个人的总成绩并排名(要求显示字段: 学号,姓名,总成绩)

> 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.计算每个人单科的最高成绩(要求显示字段: 学号,姓名,课程,最高成绩)

> sqldf('select stuid,name,subject, max(score) as maxscore from stuscore group by stuid')

stuid name subject maxscore
1 1 张三 数学 89
2 2 李四 数学 90

4.计算每个人的平均成绩(要求显示字段: 学号,姓名,平均成绩)

> 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.列出各门课程成绩最好的学生(要求显示字段: 学号,姓名,科目,成绩)

> 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 李四 数学 90
3 2 李四 英语 80

6.列出各门课程的平均成绩(要求显示字段:课程,平均成绩)

> sqldf('select subject,avg(score) as avgscore from stuscore group by subject')

subject avgscore
1 数学 89.5
2 英语 75.0 3 语文 75.0

图片展示
 
相关评论
站长推荐