Примените одну и ту же функцию к каждому столбцу с помощью tidyverse и mutate_all - PullRequest
0 голосов
/ 10 июля 2019

У меня есть следующий фрейм данных

df <- data.frame(total=100,a=5,b=5)

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

df <- df/df$total

Однако я хочу сделать это с помощью mutate_all

Мой код такой

df <- data.frame(total=100,a=5,b=5) %>% mutate_all(list(~./total))

Какойне дает мне результат, который я хочу.Что я делаю неправильно?

1 Ответ

4 голосов
/ 10 июля 2019

total - это первый столбец в вашем фрейме данных, а в mutate_all он сначала делится на total, становясь равным 1. Затем остальные столбцы просто делятся на 1. Если total был последним столбцом Я думаю, что ваш синтаксис будет работать, но не стоит полагаться на это. Вероятно, лучше использовать mutate_at и исключить total, чтобы избежать этого:

data.frame(a=5,b=5,total=100) %>% 
    mutate_at(vars(-total), list(~./total))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...