Преобразование Boxcox для нескольких переменных с помощью mutate_at - PullRequest
0 голосов
/ 26 ноября 2018

Скажем, я хочу выполнить преобразование boxcox из пакета caret на следующих данных (не данных, с которыми я работаю, а просто для объяснения моей проблемы):

library(caret); library(tidyverse)
set.seed(001)
d <- tibble(a = rpois(20, 10), b = rnorm(20, 40, 10))
    head(d)
# A tibble: 6 x 2
      a     b
  <int> <dbl>
1     8  20.1
2    10  46.2
3     7  39.4
4    11  38.4
5    14  25.3
6    12  35.2

Я могу добиться этого, запустив

d1 <- BoxCoxTrans(d$a) %>% predict(d$a)

Я могу повторить тот же процесс для преобразования б.Есть ли способ сделать преобразование boxcox для обеих переменных a и b одновременно с помощью dplyr?Я попробовал следующее, но я не могу понять, как написать .funs

d %>% mutate_at(c("a", "b"), BoxCoxTrans %>% predict(d))

1 Ответ

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

Я никогда не использовал каретку, но есть ли причина, по которой эти решения не будут работать в вашем конкретном случае?(Они работают хорошо для меня.)

library(tidyverse)
library(caret)
library(e1071)
set.seed(001)
d <- tibble(a = rpois(20, 10), b = rnorm(20, 40, 10))
head(d)

#On selected columns
d %>%
  mutate_at(vars(a,b), funs( BoxCoxTrans(.) %>% predict(.)))

#Or on all columns
d %>%
  mutate_all(funs( BoxCoxTrans(.) %>% predict(.)))
...