首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用dplyer包进行数据转换

前面我们介绍了如何使用ggplot进行数据可视化,这一节我们来讨论如何利用dplyer进行数据转换。

生在大数据时代,我们无时无刻不接受和记录着各种各样的数据,想要利用这些数据进行可视化,就需要数据格式完全符合我们的要求,然而这种情况是非常罕见的。一般来说我们都需要对数据进行筛选、排序、选取、创建、汇总等步骤的加工,才能得到结构完整,符合绘图要求的数据。

1 使用filter函数进行筛选

library(nycflights13)

library(tidyverse)

filter() 函数可以基于观测的值筛选出一个观测子集。它的第一个参数是数据框,后面的参数是筛选条件。我们使用nycflights13包中的数据flights来说明dplyr包的核心理念,并使用ggplot2来帮助我们理解数据。flights数据集包含336776 行,19列。我们首先看看它的一些基本信息。

flights

## # A tibble: 336,776 x 19

若我们现在需要筛选2013年,1月份的航班信息,则可以这样操作。

fl_201301

fl_201301

## # A tibble: 27,004 x 19

2 使用 arrange函数进行行排序

arrange函数的工作方式与filter函数非常相似,只是功能是排列数据行的顺序,而不是筛选。比如我们按照航班年份倒序进行排列数据,可以这样操作。

rk

rk

## # A tibble: 336,776 x 19

## year month day dep_time sched_dep_time dep_delay arr_time

3 使用 select函数进行选择列

一个数据集可能有很多变量,如flights有19个变量,但是我们感兴趣或者真正用到的只有其中某几个,这就需要我们对变量进行选择,而select函数可以很好的解决这个问题。比如我们只想知道航班的时间、航空公司的名字、到达地点,则可以这样操作。

subs

subs

## # A tibble: 336,776 x 5

通过查看select函数的帮助,可以知道select函数内还可以添加starts_with(),ends_with(),contains(),everything()等函数作为参数,实现更加灵活地额选择工作。

4 使用 mutate函数添加新变量

当我需要向数据集中添加新列时,我可以用mutate函数来实现,它总是将新列添加在数据集的最后。比如我们在flights最后一列加上我的名字,可以这样操作。

newf

newf

newf

## # A tibble: 336,776 x 1

如果只想保留新变量,则可以选择使用transmute函数。

newf2

newf2

## # A tibble: 336,776 x 1

5 使用summarize函数进行分组汇总

summarize函数可以对数据实现很的汇总,通常与group_by联合使用。如果想知道每个月有多少个航班,航班到达延误的平均时间,则可以这样操作。

summarize(group_by(flights, month), count=n(),delay = mean(arr_delay, na.rm = TRUE))

## # A tibble: 12 x 3

6 使用管道操作符(%>%)进行多种操作

管道操作符是数据处理中一个非常便利的粉工具,它使得代码具有更好的可读性。例如上述的每月航班数量和平均到达的延误时间可以这样操作。%>%读作“然后”

flights%>%group_by(month)%>%

summarize(count=n(),

delay=mean(arr_delay,na.rm = TRUE))

## # A tibble: 12 x 3

当然我们也可以通过ggplot来查看一下每月的航班数量是怎样的情况。

flights%>%group_by(month)%>%

summarize(count=n(),

delay=mean(arr_delay,na.rm = TRUE))%>%

ggplot(mapping = aes(x=month,y = count)) +

geom_bar(stat = "identity")+

scale_x_continuous(breaks=1:12,label=paste(1:12,"月",sep=""))

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180818G1MD9V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券