R语言初步-数据转换-4.mutate()函数

Python011

R语言初步-数据转换-4.mutate()函数,第1张

mutate:变异 突变 改变 数据修改

紧接着创建新的列gain和speed

新创建的列同时也可以使用(但是保留的方法仍然是赋值给某个名称):

由于系统显示限制,最后一列没有展示出来,运行view()函数即可:

如果只想要保留新的变量,那就使用transmute()函数:

此时参与计算的arr_delay、dep_delay、air_time、hours都消失,只有新转换的gain、hours 、gain_per_hour三列。

mutare()函数可以和前面提到的几个函数结合起来使用。其中进行运算的时候,肯定会涉及到R语言的计算语言,以下列出几个常用的:

举例:

【上一篇:14.关于select()】

【下一篇:16.关于summarise()之一】

    mutate()函数也是一个对列进行操作的函数。重申:目前为止,我们已经学习了filter(),arrange(),select()函数,前两者是对数据框的行(观测值)进行的操作,列不变;select()是对数据框的列(变量)操作,行不变。

    mutate()函数的title是 Create, modify, and delete columns 。本篇中会讲到两个函数mutate()和transmute():

    1. mutate()函数增加新列并保留已存在的列

    2. transmute()函数增加新列但会丢掉之前存在的列

    3. 如果新变量的名字和已知变量相同,则会直接覆盖之前的内容(modify体现在此处)

    4. 可以通过将变量设置为NULL来删除列(delete体现在此处)

    mutate()的两种用法:

    transmute()只会返回新计算得到的列:

    有很多函数可以和mutate()一起连用帮助我们创建新的列,前提是这些函数必须接受一个向量,然后返回一个和输入向量相等长度的向量,如果参与运算的多个向量长度不等,则会自动补齐到同样长度。几种常用的函数如下:

    1. 算术运算符

    包括:+(加)、-(减)、*(乘)、/(除)、^(幂)

    2. 模运算(Modular arithmetic)

    包括:%/% (integer division,取整) and %% (remainder,取余)。

    例如:

    3. 对数运算

    包括:log()、log2()、log10()。对数运算可以处理值跨越多个数量集范围的数据集。也可以将乘法关系转换为加法关系。

    4. Offsets

    包括:lag()和lead()函数,title是 Compute lagged or leading values-计算滞后值或前导值 ,Find the "previous" (lag()) or "next" (lead()) values in a vector. Useful for comparing values behind of or ahead of the current values.帮助文档:

    5. Cumulative and rolling aggregates

    包括cumulative aggregats:计算running和、running乘积、running最大、running最小值、累积平均值的函数:cumsum(), cumprod(), cummin(), cummax()、cummean()。它们的输入参数都是一个向量。running在这里可以理解为动态的意思。其中cummean()函数在dplyr包中。rolling aggregates相关的计算函数在RcppRoll包中。

    PS:cumulative是累计求和,求平均等;rolling是在一个滚动的窗口内进行计算,划窗?

    6. 逻辑比较

    包括:>,>=,<,<=,==,!=

    7. Ranking

    很多ranking函数,包括min_rank()、row_number()、dense_rank()、percent_rank()、cume_dist()、ntile()。

    再次脑子不够用,刨坑....

    小练习

    1.将flights数据集中的dep_time和sched_dep_time变成从midnight开始的分钟的形式。(我会了)

    2. air_time和arr_time - dep_time比较会有什么样的结果?是你想要的吗?怎么得到你想要的呢?(arr_time -dep_time得到的是飞机在路途中的时间,但是是HHMM格式的,air_time是分钟形式的。但即使我转换之后两者还是不相等,我不知道为什么?)

    3.用rank函数找到10个最延迟的航班(用min_rank(),但今天不填坑)

    4. R提供了什么样的三角函数?

    5. 1:3 + 1:10结果如何?

【上一篇:14.关于select()】

【下一篇:16.关于summarise()之一】