根据here和here这些行中类似问题的精神,我希望能够在data_frame
&创建一个新列:
df_abc = data_frame(
FJDFjdfF = seq(1:100),
FfdfFxfj = seq(1:100),
orfOiRFj = seq(1:100),
xDGHdj = seq(1:100),
jfdIDFF = seq(1:100),
DJHhhjhF = seq(1:100),
KhjhjFlFLF = seq(1:100),
IgiGJIJFG= seq(1:100),
)
# this does what I want
df_abc %>%
mutate(
sum_1 = orfOiRFj + xDGHdj + jfdIDFF + DJHhhjhF
)
显然,如果此序列中存在大量变量,则输入它们是不可行的。此外,变量的名称不是正则表达式,因此不能由规则选择,除了它们出现在序列中的事实。
我希望在tidyverse中存在一个抽象,允许类似的东西:
df_abc %>%
mutate(
sum_1 = sum(orfOiRFj:DJHhhjhF)
)
感谢。
答案 0 :(得分:2)
您可以使用rowSums
来执行此操作:
# option 1
df_abc %>% mutate(sum_1 = rowSums(.[3:6]))
# option 2
df_abc %>% mutate(sum_1 = rowSums(select(.,orfOiRFj:DJHhhjhF)))
结果:
# A tibble: 100 x 9
FJDFjdfF FfdfFxfj orfOiRFj xDGHdj jfdIDFF DJHhhjhF KhjhjFlFLF IgiGJIJFG sum_1
<int> <int> <int> <int> <int> <int> <int> <int> <dbl>
1 1 1 1 1 1 1 1 1 4
2 2 2 2 2 2 2 2 2 8
3 3 3 3 3 3 3 3 3 12
4 4 4 4 4 4 4 4 4 16
5 5 5 5 5 5 5 5 5 20
6 6 6 6 6 6 6 6 6 24
7 7 7 7 7 7 7 7 7 28
8 8 8 8 8 8 8 8 8 32
9 9 9 9 9 9 9 9 9 36
10 10 10 10 10 10 10 10 10 40
# ... with 90 more rows