小试牛刀:用SQL玩转R数据框

技多不压身,跨界融合更是对十八般武艺的一种考验,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)

小试牛刀:用SQL玩转R数据框

3.3,WHERE 过滤数据

SQL2=sqldf(“SELECT * FROM student_dframe WHERE sex =’男’;”)

R2 = filter(student_dframe, sex==”男”) identical(SQL2, R2)

输出结果:

小试牛刀:用SQL玩转R数据框

3.5,Inner Join 集合合并–添加列

我们需要在创建一个学生姓名的数据框:

code—

sid<-c(1,2,3,4,5,6) # 学号一样

sname<-c(‘张三’, ‘李四’, ‘王二’, ‘狗蛋’, ‘毛线’, ‘乔布斯’)

student_name <- data.frame(sid, sname)

小试牛刀:用SQL玩转R数据框

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)

输出结果:

小试牛刀:用SQL玩转R数据框

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)

输出结果:

小试牛刀:用SQL玩转R数据框

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)

小试牛刀:用SQL玩转R数据框

期待能够在我的下一个文章遇到你,如果你有什么疑问或者反馈,你可以扫码关注公众号,通过私信给我留言,我会第一时间给你答复。

最后,中国加油,武汉加油,一起加油

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注