мутировать несколько функций одновременно с пользовательской функцией - PullRequest
0 голосов
/ 05 февраля 2019

Я уже нашел несколько сообщений SO по этому вопросу, но не могу понять, как применить к моей конкретной проблеме.

У меня есть фрейм данных с рядом функций, которые я хотел бы одновременно изменять.Я хочу писать поверх них, а не создавать новые функции.

Например, используя mtcars.Предположим, я хочу изменить am, gear и carb на 1, если больше 0, и 0 в противном случае.Для каждой из этих 3 функций.Как я могу это сделать?

mtcars %>% mutate_at(vs:carb, funs(???))

Я хочу применить пользовательскую функцию этой формы ifelse(x > 0, 1, 0), где x - это одна из 3 функций, над которыми работаем.

Как мне достичьэто?

1 Ответ

0 голосов
/ 05 февраля 2019

Вам нужно использовать vars() для vs:carb для анализа, и вы используете . в качестве замены для аргумента в funs:

mtcars %>% mutate_at(vars(vs:carb), funs(ifelse(. > 0, 1, 0)))
#     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
# 1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    1    1
# 2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    1    1
# 3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    1    1
# 4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    1    1
# 5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    1    1
# 6  18.1   6 225.0 105 2.76 3.460 20.22  1  0    1    1
# ...

Это объясняется в?funs Страница справки:

Список функций, заданный:

  • Их имя, "mean"
  • Сама функция, mean
  • Вызов функции с . в качестве фиктивного аргумента, mean(., na.rm = TRUE)

С этим, соответствующим третьему пункту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...