Boa tarde!
estou trabalhando com a base de dados do imdb, para treinar.
eu realizei o seguinte script:
library (tidyverse)
library(readr)
library(dplyr)
imdb <- imdb %>%
mutate( lucro = orcamento - receita)
imdb %>%
group_by(lucro, na.rm = TRUE) %>%
mean(lucro)
Só que recebo um erro que não me retornam a média do lucro:
argument is not numeric or logical: returning NA[1] NA
Não entendi por que retorna NA, se eu removi eles…
Oi, Thainara!
No R, embora algumas funções funcionem de maneira parecida, cada função pode ter o seu jeito de usar. Esse “jeito de usar” se refere aos argumentos que cada uma possui.
O argumento na.rm
existe em algumas funções, como mean()
, min()
e max()
. A função group_by()
não possui esse argumento. Para saber os argumentos que cada função possui, basta olhar a sua documentação: help(group_by)
.
Lembre que o objetivo de uma função no R é fazer uma ação específica ou resolver um problema específico. Então faz sentido não não existir esse argumento dentro da função group_by()
, pois o objetivo dela é agrupar a base, e não modificá-la.
Além disso, olhando agora a lógica do código, não é preciso agrupar pela variável lucro. Se você gostaria apenas tirar a média do lucro, poderia fazer de duas maneiras:
mean(imdb$lucro, na.rm = TRUE)
ou
imdb %>%
pull(lucro) %>%
mean(na.rm = TRUE)
Veja que o argumento na.rm = TRUE
vai dentro da função mean()
, que de fato possui esse parâmetro. No segundo exemplo, utilizei a função pull()
, do pacote {dplyr}
. Ela retorna apenas a coluna que indicarmos dentro dela, como um vetor. Isso é preciso pois a função mean()
calcula média apenas de vetores e não de data.frames
.
Por fim, só uma dica para as suas próximas perguntas: se você formatar o código como fiz acima, fica mais fácil de ler . Na hora que estiver escrevendo a pergunta, basta selecionar o texto com código e clicar no botão </>
aqui no editor.
1 curtida