簡體   English   中英

R:用dplyr對行順序求和

[英]R: Summing a sequence of columns row-wise with dplyr

這里這里沿着這些方面的類似問題的精神,我希望能夠在我的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)
  )

謝謝。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM