通过列出列名来汇总列很简单:
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")))
答案 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