R和SQL哪个难

Python014

R和SQL哪个难,第1张

R难。

SQL是所有数据库查询的语言,由于本身结构化的特点,非常容易入手。R是相对SQL比较难的编程技能,在可视化和模型上有着显著的优势。需要扎实的从基础学起,耗费时间较久,而且需要系统学习。

R中还有一个有趣的sqldf包,它可以让你用SQL来操作dataframe,这种功能能让会R的人能练习SQL,会SQL的人能练习R,不得不感叹R语言的强大技能和神奇魅力。

当然也可以将R与外部数据库连接,直接在R中操作数据库,并生成最终结果,这也是一种可行的方法。在R中连接数据库需要安装其它的扩展包,根据连接方式不同我们有两种选择:一种是ODBC方式,需要安装RODBC包并安装ODBC驱动。另一种是DBI方式,可以根据已经安装的数据库类型来安装相应的驱动。因为后者保留了各数据库原本的特性,所以个人比较偏好用DBI连接方式。有下面这几种主要的包提供了DBI连接:RMySQL,RSQLite,ROracle,RPostgreSQL。由名字看得出它们分别对应了几种主流的数据库。

注:以上文字来自R-blogger—–《在R语言中使用SQL》

值得一提的是在运用sqldf包时可能要对R软件升级到3.1.0版以上,否则安装不会成功,这里简单介绍一种在Windows环境下对R软件自动升级的方法。

Windows上升级R语言:

install.packages("installr")

library(installr) #加载包

updateR()

之后选择“确定”就可以自动更新了

虽然在R语言中有很多优秀的函数如aggregate()和daply()可以对数据框统计,但sql功能强大,不仅能实现数据的清洗、统计、运算,还可以实现数据存储、控制、定义和调用。越来越多的公司在招聘的时候都要求数据分析师除了要掌握统计建模和数据挖掘的理论方法和编程能力外,还要求其具备使用sql的能力,楼主也在积极学习sql当中。

下面是我利用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)

>library(sqldf)

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

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

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

subject avgscore

1数学 89.5

2英语 75.0

3语文 75.0

1、R语言免费、开源专门为统计和数据分析而开发,基础安装也包含全面的统计功能和函数数据可视化功能强大。

2、Python语言:是一门主流编程语言,有着广泛的在线支持有诸如谷歌 Tensor flow 这样优秀的 package,使得机器学习框架都偏向于采用Python语言易于学习,入门容易。

3、SQL语言:SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,是最重要的关系数据库操作语言。

4、Java语言:Java 是静态面向对象编程语言的代表,具有面向对象、分布式、平台独立与可移植性、多线程、动态性等特点,目前由甲骨文公司提供技术支持。

5、Scala语言:一门多范式的编程语言,类似 Java,于 2004 年问世,设计初衷是实现可伸缩的语言,并集成面向对象编程和函数式编程的各种特性。

6、Julia语言:是一款刚出现没几年的面向科学计算的高性能动态高级程序设计语言。