Como criar um vetor com a média de uma variável

Bom dia pessoal.

Estou tentando subtrair a média de uma variável de todas as suas observações.
Tentei primeiro vetorizar a média pra depois usar a função mutate.
Também não entendi o porque do erro com o operador pipe quando usei a função reprex(), mesmo tendo carregado o tidyverse, o dplyr e o reprex

airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE))
media <- airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE))
airquality %>% mutate(desvios = Ozone - media)
vetor_de_medias <- c(media)
airquality %>% mutate(desvios = Ozone - vetor_de_medias)

Erro: Column desvios is of unsupported class data.frame
Error in Ozone - vetor_de_medias :
argumento não-numérico para operador binário

Ao usar a função reprex() também apresentou erro relacionado ao operador pipe e não trouxe o código aqui para o discourse de maneira reinderizada

airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE))
#> Error in airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE)): não foi possível encontrar a função "%>%"
media <- airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE))
#> Error in airquality %>% summarise(media_ozone = mean(Ozone, na.rm = TRUE)): não foi possível encontrar a função "%>%"
airquality %>% mutate(desvios = Ozone - media)
#> Error in airquality %>% mutate(desvios = Ozone - media): não foi possível encontrar a função "%>%"
vetor_de_medias <- c(media)
#> Error in eval(expr, envir, enclos): objeto 'media' não encontrado
airquality %>% mutate(desvios = Ozone - vetor_de_medias)
#> Error in airquality %>% mutate(desvios = Ozone - vetor_de_medias): não foi possível encontrar a função "%>%"

Created on 2020-10-25 by the reprex package (v0.3.0)

Obrigado

2 curtidas

Bom, summarise não cria o vetor que você espera, ele apenas devolve um resultado, que no seu caso é a média. Você precisa usar, ao invés de summarise, a função mutate. Ficaria assim:

library(tidyverse)

airquality_mean <- airquality %>% mutate(media = mean(Ozone, na.rm = TRUE))

airquality_mean %>% mutate(desvios = Ozone - media)
2 curtidas

Muito obrigado Giovani!