【上一篇:10.关于基础知识(basics)】
【下一篇:12.关于filter()】
前1-9是Data Visualisation的部分,通过绘图让我了解了一些基本知识,让我知道ggplot2都可以干什么。这个时候我只能依葫芦画瓢,想随心所欲画图是不太可能的。最大的一个困难是数据输入数据及其格式多种多样,怎么才能变成ggplot2可以用的格式?所以之后的篇幅学习Data Transformation。前面学到一个名词叫做Stat Transformation,这两者的区别是统计转换是对数据做一些统计处理,包括计数、求百分比等;数据转换是将你的数据通过各种计算方法得到可以用于绘制你想要的图的ggplot2可以用的数据,数据转换可能回用到统计转换的一些方法,就像计数,你可以让stat函数自动帮你算,也可以自己算好再输入到ggplot2中。
用dplyr包和flights数据集(来自nycflights13包)来学习。首先保证你的R中安装了这两个包。dplyr是tidyverse包的另一个核心成员(tidyverse这个包也需要值得专门学习,后面开坑),所以加载tidyverse就可以。
#加载tidyverse之后提示附加包有哪些
#同时提示dplyr中的filter函数和lag函数与base R中(stats包)的有冲突
#所以如果你想使用base R中的这两个函数,就要用它们的全名stats::filter(参数)|stats::lag(参数)
> library("nycflights13")
> library(tidyverse)
-- Attaching packages ------------------------------------------- tidyverse 1.3.1 --
√ ggplot2 3.3.5 √ purrr 0.3.4
√ tibble 3.1.2 √ stringr 1.4.0
√ tidyr 1.1.3 √ forcats 0.5.1
√ readr 1.4.0
-- Conflicts ---------------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
先认识flights数据集:
#flights数据集是2013从纽约出发的所有航班的准点率数据。
#New York City Flights 2013 --- nycflights13
#336,776个观测值,19个变量
#这个数据框是tibble,基于常规的数据框进行了微调以使它能更好地子tidyverse中工作
> flights
# A tibble: 336,776 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
<int> <int> <int> <int> <int> <dbl> <int> <int>
1 2013 1 1 517 515 2 830 819
2 2013 1 1 533 529 4 850 830
3 2013 1 1 542 540 2 923 850
4 2013 1 1 544 545 -1 1004 1022
5 2013 1 1 554 600 -6 812 837
6 2013 1 1 554 558 -4 740 728
7 2013 1 1 555 600 -5 913 854
8 2013 1 1 557 600 -3 709 723
9 2013 1 1 557 600 -3 838 846
10 2013 1 1 558 600 -2 753 745
# ... with 336,766 more rows, and 11 more variables: arr_delay <dbl>,
# carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
# air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
#flights数据框的列说明
1. year, month, day:起飞日期
2. dep_time, arr_time:实际起飞和到达时间
3. sched_dep_time, sched_arr_time:计划起飞和到达时间
4. dep_delay, arr_delay:起飞和到达延误,以分钟为单位。负值表示提前起飞/到达
5. carrier:航空公司名称的两个字母缩写,可以从“airlines”这个数据框中查缩写和全名的对应关系
6. flight:航班号
7. tailnum:飞机尾号,可以从“planes”这个数据框中查联邦航空局登记的所有飞机的元数据
8. origin, dest:飞机起飞地和目的地,可以从“airports”这个数据框中查看跟飞机起飞和到达地点的元数据
9. air_time:在空中停留时间,以分钟为单位
10. distance:机场之间的距离,以英里为单位
11. hour, minute:预计的起飞时间分成小时和分钟
12. time_hour:预定的航班日期和时间作为POSIXct日期。与origin一起,可用于将航班数据加入到weather数据中。
#关于tibble中每个变量类型的说明(列名下面显示的三或四个字母的缩写)
1. int:整数
2. dbl:双精度或实数
3. chr:字符向量或字符串
4. dttm:一个日期+一个时间(a date+a time)
5. lgl:仅包含TRUE或FALSE的逻辑值或向量
6. fctr:因子,R用固定的可能值来代表分类变量
7. date:日期(dates)
dplyr基础知识:
5个重要dplyr函数帮你解决绝大多数的数据操作挑战(很开心,只有5个!!!)。
1. filter():根据观察对象的值选择observations
2. arrange():对行重新排序
3. select():根据变量名选择variables
4. mutate():用现有变量的函数创建新变量
5. summarise():对值进行summary,Collapse many values down to a single summary
#这些都可以跟group_by()一起使用,group_by()将每个函数的作用域从操作整个数据集改为逐组操作
#数据操作语言的verbs:以上6个
#这6个verbs的工作过程相似:
1. 第一个参数数数据框
2. 后面的参数表示对数据框做什么,用不带引号的变量名
3. 结果是一个数据框
之后分别介绍这6个函数。
问题汇总:
1. flights数据集中的时间为什么看起来像个整数?(flights的说明文档中写了dep_time的格式是HHMM/HMM, local tz,HHMM/HMM是时间格式,HHMM代表24小时制(HMM代表12小时制?),所以05:15可以表示成515这个整数,17:35可以表示为1735这个整数,local tz是local timezone,当地时区的意思。这里就涉及到R中时间的表示的一些问题了。DATA:日期,表示格式可以为2021-07-24、POSIXct:从UNIX元年(1970-01-01 00:00:00)开始到某个时间的秒数(count time)、POSIXlt:用列表方式表示时间,时间的每个部分是列表的一个元素,可以包含日期、时间、时区信息。flights的最后一列的格式是dttm是把日期和时间合并了;hour, minute=sched_dep_time拆分一下。)
2. 变量的类型会对后面的数据处理以及绘图有影响吗?(会的吧?时间的计算跟你表示时间的格式有关系,是不是因子类型的变量跟绘图时的排序有关系,连续型变量和离散型变量的处理方式也不同。)
3. 实数和整数的区别?(整数包括正整数、0、负整数;实数是可以在数轴上一一表示的点,与虚数相对,包括有理数和无理数,实数可以用来测量连续的量,可以在R中可以表示连续型变量,也可以表示离散型变量;整数只能表示离散型变量。)
4.为什么chr既可以代表字符型向量,又可以代表字符串,两者的区别是什么?(额,暂时不知道)
5.可喜欢View(flights)了,在Rstudio中执行后可以看到这样的东西:
贼直观有没有!!!