R语言数据科学第五章:数据操作dplyr(上)

超级好用的dplyr, 让你从数据小白跨出一大步。

以下内容主要来自 R for data science 书第五章内容前半部分,主要讲几个基本命令(filterarrangeselectmutatesummarise)的操作。

1.载入需要的R包

library(tidyverse) #dplyr包已经被整合入tidyverse包
library(nycflights13) #载入这个包主要是用里面的示例数据做分析

2.使用命令

  • filter 按照条件过滤数据
  • arrange 排序
  • select 按照列名选择变量。功能强大,可使用正则表达式。
  • mutate 基于现有变量创造新变量
  • summarise 汇总统计数据,常和分组命令(groupby)一起使用

3.filter

过滤样本,可结合逻辑变量一起使用:

  • & 代表 和
  • | 代表 或
  • ! 代表 非
  • %in% 代表 是否被包含。 如1 %in% c(1,2)代表1是否包含于 c(1,2)。该命令会返回True。
#筛选出1月1号的航班
filter(flights, month==1, day==1)
#筛选出1月或2月的航班
filter(flights, month==1 | month==2)
#筛选出不在1月或2月的航班
filter(flights, !(month==1 | month==2))

4.arrange

排序。

  • 可按多个关键字排序,从前到后由主到次。
  • 默认升序,降序需要在排序变量外加desc,如:desc(month)
#按时间顺序由前到后排序
arrange(filter, year, month, day)
#按航班延误时间有多到少排序
arrange(flights, desc(arr_delay))

5.select

按变量名选择子数据框

  • 使用可以连续选取
  • 使用 -可删除指定变量
  • starts_with(), end_with(), contains()分别代表选取以指定字符开始、以指定字符结尾,包含指定字符的变量名。
  • matches()可使用正则表达式匹配变量名
#选取变量名以“d”开头的变量
select(flights, ends_with("d"))
#选取变量名以“time”结尾的变量
select(flights, ends_with("time"))
#选取变量名中包含“dep”的变量
select(flights, contains("time"))
#使用正则表达式选取变量名以“d”开头的变量
select(flights, matches("^d"))

关于正则表达式的概念,以后会详细讲解。

rename()可直接对变量重命名。如:
rename(flights, mon = month)

6.mutate

增加新的变量。可对已有变量进行数学计算后生成新变量。

# 使用航班到达时间减去航班出发时间生成航班运行时间变量。
mutate(flights, use_time = arr_time - dep_time)

transmute只保留新生成的变量。如:

transmute(flights, use_time = arr_time - dep_time)

7.summaries

获得变量的汇总统计结果(均值,最大值,最小值,方差等),常和groupby一起使用,获得不同分组的汇总统计结果

#计算航班平均延误时间
summarise(flights, mean(dep_delay, na.rm=TRUE))
#计算航班每月的平均延误时间
flights %>% group_by(month) %>% summarise( mean(dep_delay, na.rm=TRUE))

这里出现了一个新的符号%>%,是dplyr专用的。我们称之为管道符,功能类似于shell中的|,作用是讲前面的变量传递到后面使用。
这个功能最大的好处是减少代码运行过程中生成的中间变量

na.rm = TRUE 是R中常用的命令,在apply函数中也经常用到。作用是计算时不考虑缺失数据。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容