生物信息学札记

R dplyr 函数介绍之 mutate(), transmut

2020-08-27  本文已影响0人  天地本无心

数据分析中,我们最常接触的数据格式为数据框,而对数据框最常见的操作就是添加新的列,这时候我们就可以使用mutate函数来完成相应的工作。

我们演示中使用的数据集为gcookbook里的drunk数据集。drunk数据集反应的是,1970年1月1日至6月27日期间因为醉酒被Tower Bridge和Lambeth Magistrate地方法院判处有罪的人数,数据是根据年龄和性别来进行分类的。

#install.packages("gcookbook") 
> require(gcookbook)
> require(tidyverse)

Loading required package: gcookbook
> drunk
     sex 0-29 30-39 40-49 50-59 60+
1   male  185   207   260   180  71
2 female    4    13    10     7  10

我们接下来演示一下,如何对数据进行添加新列的操作。

操作1: 根据文件的行数增加新的一列,并命名为rowid。
> require(tidyverse)
> drunk %>% 
+     mutate(rowid = row_number())
     sex 0-29 30-39 40-49 50-59 60+ rowid
1   male  185   207   260   180  71     1
2 female    4    13    10     7  10     2
操作2: 根据已有的列创造新的列(变量),新增变量放在数据框的最后边。
> drunk %>% 
+     mutate(older_than_30 = `30-39`+ `40-49`+ `50-59` + `60+`,
+            older_than_40 = `40-49` + `50-59` + `60+`,
+            older_than_50 = `50-59` + `60+`)
     sex 0-29 30-39 40-49 50-59 60+ older_than_30 older_than_40 older_than_50
1   male  185   207   260   180  71           718           511           251
2 female    4    13    10     7  10            40            27            17

需要解释一下的是,上面的类似于30-39不是单引号,因为数字不能充当变量名,这么需要这么操作。通过上述操作,我们看到数据框确实添加了三列。

操作3: 根据已有的列创造新的列,并且仅仅保存新增变量,这是需要用到的函数是transmute()
> drunk %>% 
+     transmute(older_than_30 = `30-39`+ `40-49`+ `50-59` + `60+`,
+               older_than_40 = `40-49` + `50-59` + `60+`,
+               older_than_50 = `50-59` + `60+`)
  older_than_30 older_than_40 older_than_50
1           718           511           251
2            40            27            17
小结:
上一篇 下一篇

猜你喜欢

热点阅读