dplyr: вычислить сумму переменных, имена которых находятся в векторе - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужно программно добавить несколько переменных, имя которых находится в векторе.Например, для данного вектора:

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

как мне написать следующее выражение, используя предыдущий вектор?

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

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы можете использовать 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 и / или pipe-оператором.

0 голосов
/ 30 ноября 2018

Мы можем использовать rowSums после поднабора столбцов набора данных

library(dplyr)
df %>% 
      mutate(TotalEvaluation = rowSums(.[myvars]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...