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

Python017

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

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

紧接着创建新的列gain和speed

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

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

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

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

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

举例:

across()它可以轻松地对多列执行相同的操作

给每一列加1

前两列四舍五入

还有如下2种写法

按列求均值

按行求和

分组求均值

分组求和

使用.name参数控制输出名

筛选没有缺失值的行

使用时mutate(),所有转换across()都将立即应用

统计字符长度

统计列最小/最大值

R语言中的dplyr包非常神奇,里面包含很多的函数,今天我们就来介绍下窗口函数的应用。

窗口函数应用

mtcars %>% group_by(cyl) %>% mutate(rank= min_rank(desc(mpg)))

mtcars %>% group_by(cyl) %>% mutate(mpg_max = max(mpg))

原来的明细还保留,同时每个分组的统计值算出来了,是不是很方便

1.2 批量操作

同时若你嫌麻烦一个个地对变量进行操作,还可以使用mutate_each函数对数据框中的变量批量操作,通过调整funs(即functions)和vars(variables)参数控制functions的数量,以及参与变形的variables,这里控制variables的技巧与select函数相似。

#对每个变量进行排名

mtcars%>%mutate_each(funs(dense_rank))

mpg cyl disp hp drat wt qsec vs am gear carb

1 16 2 13 11 16 9 6 1 2 24

2 16 2 13 11 16 12 10 1 224

3 19 16 615 7 22 2 221

4 17 2 16 115 1624 2 111

5 13 3 23 156 18 10 1 112

#对disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),disp)

mpg cyl disp hp dratwt qsec vs am gear carb dense_rank min_rank

1 21.0 6 160.0 110 3.90 2.620 16.46 0 144 13 13

2 21.0 6 160.0 110 3.90 2.875 17.02 0 144 13 13

3 22.8 4 108.0 93 3.85 2.320 18.61 1 141 6 6

4 21.4 6 258.0 110 3.08 3.215 19.44 1 031 16 18

5 18.7 8 360.0 175 3.15 3.440 17.02 0 032 23 27

6 18.1 6 225.0 105 2.76 3.460 20.22 1 031 15 17

7 14.3 8 360.0 245 3.21 3.570 15.84 0 034 2327

#对除了disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),-disp)

2、transmute

返回值中不包含原数据集变量,只保留计算转换后的变量。

mtcars%>%mutate(wt_log=log(wt))

mtcars%>%transmute(wt_log=log(wt))

mtcars %>%mutate(displ_l = disp / 61.0237)

mtcars %>%transmute(displ_l = disp / 61.0237)