汇总dplyr中的选定列(使用select()方法)

时间:2019-03-06 21:15:37

标签: r dplyr contains rowwise

通过列出列名来汇总列很简单:

iris %>% rowwise() %>% mutate(sum = sum(Sepal.Length, Sepal.Width, Petal.Length))

但是,说有很多列,您有兴趣提取包含“ Sepal”的所有列,而无需手动列出它们。具体来说,我正在寻找一种方法,该方法与dplyr中的select()允许您使用带有contains(),starts_with()等的子集的列相同。

有多种方法可以使用mutate_all()+ sum()+ join()来实现与该查询相同的结果,但我更感兴趣的是看到与以下代码更接近的解决方案:

iris %>% rowwise() %>% mutate(sum = sum(contains(colnames(.), "Sepal")))

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那么基本上您是在尝试做

library(dplyr)

iris %>% mutate(sum = rowSums(select(., contains("Sepal"))))

前几行:

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species sum
1          5.1         3.5          1.4         0.2  setosa 8.6
2          4.9         3.0          1.4         0.2  setosa 7.9
3          4.7         3.2          1.3         0.2  setosa 7.9
4          4.6         3.1          1.5         0.2  setosa 7.7
5          5.0         3.6          1.4         0.2  setosa 8.6
6          5.4         3.9          1.7         0.4  setosa 9.3