Discussão sobre exercícios aula 2 e 3 - R4DS1

Iniciem discussões e dúvidas sobre as aulas 2 e 3 (de importação e dplyr)

1 Curtida

Boa tarde, Athos.
Tudo bem?

Poderia esclarecer uma dúvida?
No exercício da aula 3 - Manipulação de dados, há uma questão para realizar lucro-relativo (lucro - lucro_médio)/lucro_medio) da base imdb.

Quando rodo o script abaixo, a coluna lucro_relativo fica todo com o valor NA, poderia verificar o motivo?

imdb %>%
mutate(
lucro = receita - orcamento,
lucro_relativo = (lucro - mean(lucro))/mean(lucro)
)

Muito obrigada.

@jiminlee o problema está no uso do mean(). A coluna lucro contém NA em algum lugar, daí quando se tira mean(lucro) o valor devolvido vai ser sempre NA tbm. Para contornar esse problema vc precisa usar o parâmetro na.rm = TRUE, ou seja, mean(lucro, na.rm = TRUE) pois assim o comando vai desconsiderar os NAs dentro de lucro e vai tirar a média apedas dos valores conhecidos.

Abaixo uma simples demonstraçao desse comportamento com um vetorzinho de 3 elementos:


mean(c(1, 2, NA))
#> [1] NA

mean(c(1, 2, NA), na.rm = TRUE)
#> [1] 1.5

Created on 2020-05-31 by the reprex package (v0.3.0)

1 Curtida

Athos,

Mas quando eu coloco na.rm = TRUE, as duas colunas novas “lucro” e “lucro_relativo” ficam com o valo NA em todas as linhas.
O que eu estou fazendo de errado?

imdb %>%
mutate(
lucro = receita - orcamento,
lucro_relativo = (lucro - mean(lucro))/mean(lucro), na.rm = NA
) %>% View()

Repare que o parâmetro na.rm pertence exclusivamente à função mean(), então vc deve passar o parâmetro pra essa função toda vez.

 (lucro - mean(lucro, na.rm = TRUE))/mean(lucro, na.rm = TRUE)

colocar o na.rm = TRUE depois da expressão e separado por vírgula não vai funcionar porque você não está colocando o parâmetro dentro de nenhuma função. O parâmetro está solto e fora de contexto.

O conceito importante é que parâmetros sempre atuam dentro de suas respectivas funções!

1 Curtida

Agora deu certo sim :slight_smile:

Obrigada pelo esclarecimentos

1 Curtida

Já li uns 5 vezes e mesmo assim não estou conseguindo sair do lugar :frowning:
Teria alguma outra dica para eu possa ter um insight?

Obrigada.

Ji! O segredo está no uso do for()

Dê uma olhada na seção 3.12.2 Iteradores: for e while do nosso material!

1 Curtida