Marcando na base uma característica específica

Dúvida: qual a forma mais inteligente e rápida de resolver isso?

Base: carros com mesmo modelo, porém anos de fabricação e cores diferentes.

Quero trazer exatamente qual carro é mais antigo (menor ano de fabricação) e sua cor e modelo exato.

Se eu fizer um

base_agg<- base %>% group_by(modelo) %>%
summarise(Ano=min(Ano),
Cor=first(Cor))

Eu vou ter que cruzar de volta na base pra saber quem é o modelo mais velho exatamente na minha base original né (quem é: cor, modelo e ano).

Tem alguma forma de já sair com essa info sem precisar levar de volta a informação da base_agg?

Obrigada!

Oi Pri-hoh, boa tarde.

Não sei se entendi bem teu problema, mas se entendi acho que esse exemplot te ajuda:

library(tidyverse)

car_ex <- data.frame( ano = c(2010,2009,2015,2012,2020, 1999),
modelo =c(“bmw”,“ka”,“fusca”,“fiesta”,“bmw”, “fiesta”),
cor = c(“azul”, “amarela”, “bege”, “branca”, “preta”,“laranja”))

teste <- car_ex %>%
group_by(modelo) %>%
filter(ano == min(ano))

Att.,

1 curtida

pri-hoh,

Não sei se entendi a sua dúvida, mas eu faria algo desse tipo:

library(magrittr)

nycflights13::weather %>%
  dplyr::top_n(1, dplyr::desc(time_hour))
#> # A tibble: 3 x 15
#>   origin  year month   day  hour  temp  dewp humid wind_dir wind_speed wind_gust
#>   <chr>  <int> <int> <int> <int> <dbl> <dbl> <dbl>    <dbl>      <dbl>     <dbl>
#> 1 EWR     2013     1     1     1  39.0  26.1  59.4      270       10.4      NA  
#> 2 JFK     2013     1     1     1  39.0  26.1  59.4      260       12.7      NA  
#> 3 LGA     2013     1     1     1  39.9  26.1  57.3      260       13.8      23.0
#> # … with 4 more variables: precip <dbl>, pressure <dbl>, visib <dbl>,
#> #   time_hour <dttm>

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

P.S.: Peguei qualquer tabela aqui que tinha uma data, então o exemplo teve alguns empates.

Oi, gente. Obrigada pelas sugestões

É que eu queria marcar na base mesmo.

Tipo, deixar todos os dados originais (e não filtrar) e criar um flag tipo modelo_escolhido=1 caso seja o modelo mais antigo ou modelo_escolhido=0 caso contrário.

A ideia de ordenar é ótima também, mas como marco com a flag daí?

Pri-hoh, boa noite.

Segue uma sugestão:

base_agg<- base %>%
group_by(modelo) %>%
mutate(modelo_escolhido = case_when(ano == min(ano) ~ 1,
TRUE ~ 0))