美文网首页生物信息学札记
R dplyr 函数介绍之 mutate(), transmut

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

作者: 天地本无心 | 来源:发表于2020-08-27 10:54 被阅读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
小结:
  • %>%是tidyverse包里面用来进行管道化操作的函数。
  • mutate()用来增加新的列,新增列通常在原数据框的最后面。
  • transmute()函数用来仅仅保存新增的列。

相关文章

网友评论

    本文标题:R dplyr 函数介绍之 mutate(), transmut

    本文链接:https://www.haomeiwen.com/subject/tbfcsktx.html