dplyr:计算名称在向量中的变量的总和

时间:2018-11-29 21:04:07

标签: r dplyr

我需要以编程方式添加名称在矢量中的多个变量。 例如,给定此向量:

myvars <- c("Expectation", "Interesting", "Useful", "OralPresentation")

如何使用前一个向量编写以下表达式?

df %>%
  mutate(TotalEvaluation = Expectation + Interesting + Useful + OralPresentation)

2 个答案:

答案 0 :(得分:1)

子集数据集的列之后,我们可以使用rowSums

library(dplyr)
df %>% 
      mutate(TotalEvaluation = rowSums(.[myvars]))

答案 1 :(得分:0)

您可以使用sjmisc::row_sums(),默认情况下,该行将行和追加到数据帧的末尾:

library(sjmisc)
data("iris")
col <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
row_sums(iris, col, n = 1)
#>     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species rowsums
#> 1            5.1         3.5          1.4         0.2     setosa    10.2
#> 2            4.9         3.0          1.4         0.2     setosa     9.5
#> 3            4.7         3.2          1.3         0.2     setosa     9.4
#> 4            4.6         3.1          1.5         0.2     setosa     9.4
#> 5            5.0         3.6          1.4         0.2     setosa    10.2
#> 6            5.4         3.9          1.7         0.4     setosa    11.4
#> ...

或只是新变量:

row_sums(iris, col, n = 1, append = FALSE)
#>     rowsums
#> 1      10.2
#> 2       9.5
#> 3       9.4
#> 4       9.4
#> 5      10.2
#> 6      11.4
#> ...

或具有新的变量名...

row_sums(iris, col, n = 1, var = "TotalEvaluation")
#>     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species TotalEvaluation
#> 1            5.1         3.5          1.4         0.2     setosa            10.2
#> 2            4.9         3.0          1.4         0.2     setosa             9.5
#> 3            4.7         3.2          1.3         0.2     setosa             9.4
#> 4            4.6         3.1          1.5         0.2     setosa             9.4
#> 5            5.0         3.6          1.4         0.2     setosa            10.2
#> 6            5.4         3.9          1.7         0.4     setosa            11.4
#> ...

row_sums()与dplyr和/或管道操作器无缝协作。