awu*_*089 1 r contains dplyr 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")))
如果我理解正确,基本上你正在尝试做:
library(dplyr)
iris %>% mutate(sum = rowSums(select(., contains("Sepal"))))
Run Code Online (Sandbox Code Playgroud)
前几行:
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
Run Code Online (Sandbox Code Playgroud)