我如何使用 a:b 之类的表达式按名称对变量子集进行 rowSum
How may I rowSum over a subset of variables by name with expression like a:b
dd <- data.frame(a=1:10,b=2:11,c=3:12)
dd %>% mutate( Total=rowSums(.[1:2]))
a b c CCI
1 1 2 3 3
2 2 3 4 5
3 3 4 5 7
4 4 5 6 9
5 5 6 7 11
6 6 7 8 13
7 7 8 9 15
8 8 9 10 17
9 9 10 11 19
10 10 11 12 21
有没有办法 select 像 a:b 这样的变量名?我有数百个变量,但位置可能会随着数据集的另一个版本而改变;所以安全的方法是 select 像 a:b?
这样的风格的变量
在 dplyr
1.0.0 中你可以使用 rowwise
和 c_across
:
dd %>% rowwise %>% mutate(Total = sum(c_across(a:b))) %>% ungroup
a b c Total
<int> <int> <int> <int>
1 1 2 3 3
2 2 3 4 5
3 3 4 5 7
4 4 5 6 9
5 5 6 7 11
6 6 7 8 13
7 7 8 9 15
8 8 9 10 17
9 9 10 11 19
10 10 11 12 21
dd <- data.frame(a=1:10,b=2:11,c=3:12)
dd %>% mutate( Total=rowSums(.[1:2]))
a b c CCI
1 1 2 3 3
2 2 3 4 5
3 3 4 5 7
4 4 5 6 9
5 5 6 7 11
6 6 7 8 13
7 7 8 9 15
8 8 9 10 17
9 9 10 11 19
10 10 11 12 21
有没有办法 select 像 a:b 这样的变量名?我有数百个变量,但位置可能会随着数据集的另一个版本而改变;所以安全的方法是 select 像 a:b?
这样的风格的变量在 dplyr
1.0.0 中你可以使用 rowwise
和 c_across
:
dd %>% rowwise %>% mutate(Total = sum(c_across(a:b))) %>% ungroup
a b c Total
<int> <int> <int> <int>
1 1 2 3 3
2 2 3 4 5
3 3 4 5 7
4 4 5 6 9
5 5 6 7 11
6 6 7 8 13
7 7 8 9 15
8 8 9 10 17
9 9 10 11 19
10 10 11 12 21