11.数据转换之了解一些R包和数据集用于学习和练习

【上一篇: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中执行后可以看到这样的东西:


View(flights)

    贼直观有没有!!!

【上一篇:10.关于基础知识(basics)】
【下一篇:12.关于filter()】

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

推荐阅读更多精彩内容