Download

Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Aplicações com R: preços de carros - tabela FIPE. Campo Grande-MS,Brasil: RStudio/Rpubs, 2019. Disponível em http://rpubs.com/amrofi/aplication_car_price.

1 Introdução

Este artigo é baseado em um post de 2017 de Ítalo Cegatta (https://italocegatta.github.io/como-um-cientista-de-dados-pesquisa-o-carro-que-quer-comprar/) e seu pacote fipe (cegatta2019).

Conforme Cegatta (2017), “o pacote fipe foi desenvolvido para facilitar a consulta dos preços dos veículos vendidos no Brasil levantados pela FIPE”. Seus preços podem ser consultados online no site https://veiculos.fipe.org.br/. O primeiro passo é instalar o pacote fazendo uso do github do autor.

install.packages("remotes")
remotes::install_github("italocegatta/fipe",force = TRUE)

O pacote faz uma consulta semelhante ao site oficial, onde se preenchem os campos com detalhes do mês de referência, marca, modelo e ano do veículo de interesse. É necessário usar exatamente os descritores que a FIPE utliza em termos da grafia dos nomes. Primeiro chamaremos os pacotes.

library(tidyverse)
library(stringr)
library(forcats)
library(fipe)

2 Obtendo os preços

Faremos um ensaio para a caminhonete S10 ano 2016, e data de referência 01/Abril/2019.

# acesso aos dados no site da fipe (igual ao site veiculos.fipe.org.br)
s10_2016 <- fipe_carro(modelo = "S10 Pick-Up", marca = "GM - Chevrolet", ano = 2016, 
    data_referencia = "2019-04-01")
knitr::kable(s10_2016)
modelo marca ano data_referencia valor
S10 Pick-Up LS 2.4 F.Power 4x2 CD GM - Chevrolet 2016 2019-04-01 68209
S10 Pick-Up LS 2.4 F.Power 4x2 CS GM - Chevrolet 2016 2019-04-01 58211
S10 Pick-Up LS 2.8 TDI 4x4 CD Dies. Mec. GM - Chevrolet 2016 2019-04-01 84498
S10 Pick-Up LS 2.8 TDI 4x4 CS Diesel GM - Chevrolet 2016 2019-04-01 83401
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-04-01 74068
S10 Pick-Up LT 2.5 Flex 4x4 CD GM - Chevrolet 2016 2019-04-01 82029
S10 Pick-Up LT 2.8 TDI 4x2 CD Diesel GM - Chevrolet 2016 2019-04-01 91009
S10 Pick-Up LT 2.8 TDI 4x2 CD Diesel Aut GM - Chevrolet 2016 2019-04-01 99144
S10 Pick-Up LT 2.8 TDI 4x4 CD Diesel GM - Chevrolet 2016 2019-04-01 101038
S10 Pick-Up LT 2.8 TDI 4x4 CD Diesel Aut GM - Chevrolet 2016 2019-04-01 102566
S10 Pick-Up LTZ 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-04-01 80675
S10 Pick-Up LTZ 2.5 Flex 4x4 CD GM - Chevrolet 2016 2019-04-01 87599
S10 Pick-Up LTZ 2.8 TDI 4x2 CD Dies.Aut GM - Chevrolet 2016 2019-04-01 117359
S10 Pick-Up LTZ 2.8 TDI 4x4 CD Dies.Aut GM - Chevrolet 2016 2019-04-01 118283

É possível constatar que o fato de não especificar maiores detalhes do que “S10 Pick-Up”, e marca “GM - Chevrolet”, gera um resultado múltiplo contendo todos os preços de veículos com este descritor “S10 Pick-Up”.

Outra consulta, agora com uma especificação única, “S10 Pick-Up LT 2.5 Flex 4x2 CD”, marca “GM - Chevrolet” e uma sequência de datas. Neste caso, a saída de resultados é uma sequência de valores desde 01/Jan/2017 até 01/Abril/2019. Um gráfico é feito.

# S10 Pick-Up LT 2.5 Flex 4x2 CD
s10_2016seq <- fipe_carro(modelo = "S10 Pick-Up LT 2.5 Flex 4x2 CD", marca = "GM - Chevrolet", 
    ano = 2016, data_referencia = seq.Date(as.Date("2017-01-01"), as.Date("2019-04-01"), 
        by = "1 months"))

A saída deste dado dput() está abaixo:

s10_2016seq <- structure(list(modelo = c("S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", 
    "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD"), marca = c("GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", 
    "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet"), ano = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "2016", class = "factor"), 
    data_referencia = structure(c(17167, 17198, 17226, 17257, 17287, 17318, 
        17348, 17379, 17410, 17440, 17471, 17501, 17532, 17563, 17591, 17622, 
        17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897, 17928, 
        17956, 17987), class = "Date"), valor = c(76559, 76326, 76063, 77081, 
        78112, 77943, 78139, 78199, 77586, 77982, 76529, 77223, 78269, 79307, 
        79513, 80566, 81020, 80885, 80051, 78587, 77015, 76857, 75408, 77122, 
        75639, 74987, 74479, 74068)), class = c("tbl_df", "tbl", "data.frame"), 
    row.names = c(NA, -28L))

Em formato de tabela:

knitr::kable(s10_2016seq)
modelo marca ano data_referencia valor
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-01-01 76559
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-02-01 76326
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-03-01 76063
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-04-01 77081
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-05-01 78112
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-06-01 77943
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-07-01 78139
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-08-01 78199
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-09-01 77586
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-10-01 77982
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-11-01 76529
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2017-12-01 77223
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-01-01 78269
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-02-01 79307
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-03-01 79513
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-04-01 80566
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-05-01 81020
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-06-01 80885
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-07-01 80051
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-08-01 78587
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-09-01 77015
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-10-01 76857
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-11-01 75408
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2018-12-01 77122
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-01-01 75639
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-02-01 74987
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-03-01 74479
S10 Pick-Up LT 2.5 Flex 4x2 CD GM - Chevrolet 2016 2019-04-01 74068

3 Gráfico do preço

s10_2016seq %>% ggplot(aes(data_referencia, valor, color = ano, group = ano)) + 
    geom_line(color = "grey30") + geom_point(size = 3) + facet_wrap(~modelo) + 
    labs(x = "Mês de refêrencia", y = "Valor (R$)", color = "Ano do \nmodelo") + 
    scale_y_continuous(breaks = seq(0, 1e+05, 1000), labels = scales::dollar_format(prefix = NULL, 
        big.mark = ".")) + scale_x_date(date_breaks = "1 year", date_labels = "%b/%y") + 
    scale_color_viridis_d() + theme_bw() + theme(legend.position = "top")

Ou usando o dygraphs:

library(dygraphs)
x <- ts(s10_2016seq$valor, start = c(2017, 1), frequency = 12)
dygraph(x, main = "Preços da S10 Pick-Up LT 2.5 Flex 4x2 CD, 
        01/Jan/2017-01/Abr/2019, em Reais nominais", 
    ylab = "Reais correntes (R$)") %>% dyRangeSelector() %>% dyHighlight(highlightCircleSize = 4, 
    highlightSeriesBackgroundAlpha = 0.5, hideOnMouseOut = TRUE) %>% dyAxis("x", 
    drawGrid = TRUE) %>% dyEvent("2018-01-01", "2018", labelLoc = "bottom") %>% 
    dyEvent("2019-01-01", "2019", labelLoc = "bottom") %>% dyOptions(drawPoints = TRUE, 
    pointSize = 2) %>% dyLegend(show = "follow")

Referências

CEGATTA, Ítalo. Como um cientista de dados pesquisa o carro que quer comprar? Github/Data Science. 29 Julho 2017. Disponível em: https://italocegatta.github.io/como-um-cientista-de-dados-pesquisa-o-carro-que-quer-comprar/.