首页 文章

R:用dplyr对行顺序求和

提问于
浏览
2

根据herehere这些类似问题的精神,我希望能够在 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)
  )

谢谢 .

1 回答

  • 0

    您可以使用 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
    

相关问题