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
clente
Outubro 6, 2020, 11:20pm
3
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))