Estou trabalhando com uma série de data.frames
listas, onde cada rodada adiciona um novo ano e remove o último ano, conforme mostrado na imagem abaixo:
Aqui está o código R para o exemplo mínimo reproduzível:
library(purrr)
# Define the year ranges:
(year_ranges <- map(0:2, \(increment) {(1991:1995) + increment}))
# Create data.frames:
(df_1 <- map(year_ranges, \(year_range) {
map_dfc(year_range, \(col) {setNames(list(rnorm(n = 4)), as.character(col))})
}))
Gostaria de combiná-los em um data.frame
e manter apenas os dados da última rodada se houver vários registros:
Por exemplo, o ano 1992
tem 2 rodadas de registros, somente o mais novo será usado (marcado em verde claro) e os mais antigos serão abandonados.
Como posso conseguir isso? Quaisquer comentários são bem-vindos.
Aqui está uma abordagem básica do R que usa
duplicated()
para subconjunto a última ocorrência de cada nome:Aqui está uma opção usando
purrr::reduce
anddplyr::bind_cols
: