第 18 章 tidyverse中行方向的操作

tidyverse 喜欢数据框,因为一列就是一个向量,一列一列的处理起来很方便。然而我们有时候也要,完成行方向的操作,所以有必要介绍tidyverse中行方向的处理机制。

18.1 问题

对每行的求和、求均值、最小值或者最大值?

18.2 rowwise函数

dplyr提供了rowwise函数,但大神说不推荐

18.3 Row-wise Summaries

固然可解决问题, 然而,却不是一个很好的办法,比如除了求和与计算均值,可能还要计算每行的中位数、方差等等, 因为,不是每种计算都对应的row_函数? 既然是tidyverse ,还是用tidyverse 的方法解决

18.4 purrr::map方案

按照Jenny Bryan的方案

计算均值的时候, 然而报错了

tidyverse 总会想出办法来解决,把mean() 变成 lift_vd(mean)

同理

18.5 tidy 的方案

我个人推荐的方法(Gather, group, summarize, left_join)

有点繁琐,但思路清晰

之所以有这么多的搞法,是因为没有一个很好的搞法

18.6 slide方案

slide很强大,可以滚动喔

  • 如果第一个参数是数据框,slide把数据框看作a vector of rows, 然后行方向的滚动,事实上, .x是一个个的小数据框(如下)
  • purrr::map不同,因为map把数据框看作列方向的向量, 然后迭代
  • 如果第一个参数是原子型向量的话,还是依次迭代逗号分隔的元素,只不过这里是slide比map更强大的是,还可以是滚动
## [[1]]
## # A tibble: 1 x 2
##       a     b
##   <int> <int>
## 1     1     4
## 
## [[2]]
## # A tibble: 2 x 2
##       a     b
##   <int> <int>
## 1     1     4
## 2     2     5
## 
## [[3]]
## # A tibble: 2 x 2
##       a     b
##   <int> <int>
## 1     2     5
## 2     3     6