0. 开篇
这一系列是我学习R基础的笔记,它的特点是容易查找,当然也不太严谨。如果是想快速上手,或者喜欢通过多试代码而不是阅读的朋友,可以参考我的笔记。但是想要叙述更加完整的教程的话,更推荐我自己使用过的edX平台。
3. 对结构性数据(表格)的处理(二)
这一篇介绍dplyr包的使用。关于怎么导入数据到R当中请看我的上一篇<对结构性数据(表格)的处理(一)>,这里沿用上一篇的素材:
关于好莱坞最赚钱的故事的csv文件:
https://public.tableau.com/s/sites/default/files/media/HollywoodsMostProfitableStories.csv
文章不会用过多讲解,内容其实比较浅显,下面用一个个例子展示dplyr里面一些基本函数的用法.
3.5 处理列
3.5.0 准备
先安装并且声明使用dplyr包:
install.packages("dplyr")
library(dplyr)
3.5.1 select
假如我们要创建一个新的表格movies_perform概括电影的上映表现.同时,我也复习一下不用dplyr实现这一功能的两种方法,只不过dplyr使得命令更好写(特别在实现连续操作时):
movies_perform <- movies %>% select("Film",
"Audience..score..",
"Profitability",
"Rotten.Tomatoes..",
"Worldwide.Gross")
# 其一
movies_perform <- movies[,c("Film",
"Audience..score..",
"Profitability",
"Rotten.Tomatoes..",
"Worldwide.Gross")]
# 其二
movies_perform <- movies[c("Film",
"Audience..score..",
"Profitability",
"Rotten.Tomatoes..",
"Worldwide.Gross")]
3.5.2 select_if
# 选取所有数值类型的列
movies_numeric <- movies %>% select_if(is.numeric)
# 可以顺便看一下它们之间有没有线性关系
cor(movies_numeric)
3.5.3 mutate
# 建一列人民币计价的毛利润
movies %>% mutate(Worldwide.Gross_inRMB = Worldwide.Gross * 6.5)
3.6 处理行
3.6.1 filter
# 筛选毛利润大的电影
movies_numeric %>% filter(Worldwide.Gross > 100)
# 筛去有缺失的值的行
movies_numeric <- movies_numeric %>% filter_all(all_vars(!is.na(.)))
# 可以重新看一下它们之间有没有线性关系
cor(movies_numeric)
# 是不是结果完全不同了
功能很强大,详细的要看文档了
3.6.2 group_by
movies <- movies %>% filter_all(all_vars(!is.na(.)))
movies %>% group_by(Genre) %>% summarise(num = n(), mean_Worldwide.Gross = mean(Worldwide.Gross))