Tenho um dataframe parecido com este:
data | pesca | dia_do_torneio | pescador | período_ffs | usados_ffs |
---|---|---|---|---|---|
30/01/2025 | Lago Conroe | 1 | Vila Martin | P1 | verdadeiro |
31/01/2025 | Lago Conroe | 2 | Vila Martin | P2 | verdadeiro |
2025-02-1 | Lago Conroe | 3 | Vila Martin | P1 | verdadeiro |
2025-02-13 | Corrente Harris | 1 | Vila Martin | P3 | verdadeiro |
structure(list(date = structure(c(1738195200, 1738281600, 1738368000,
1739404800, 1741219200, 1741305600, 1743638400, 1743724800, 1743811200
), tzone = "UTC", class = c("POSIXct", "POSIXt")), fishery = c("Lake Conroe",
"Lake Conroe", "Lake Conroe", "Harris Chain", "Lake Murray",
"Lake Murray", "Lake Guntersville", "Lake Guntersville", "Lake Guntersville"
), tournament_day = c(1, 2, 3, 1, 1, 2, 1, 2, 3), angler = c("Martin Villa",
"Martin Villa", "Martin Villa", "Martin Villa", "Martin Villa",
"Martin Villa", "Martin Villa", "Martin Villa", "Martin Villa"
), ffs_period = c("P1", "P2", "P1", "P3", "P1", "P1", "P3", "P2",
"P1"), used_ffs = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE)), row.names = c(NA, -9L), class = c("tbl_df", "tbl",
"data.frame"))
Meu problema é que existem 3 observações "ffs_period" para cada data única: P1, P2, P3. Só tenho dados para a observação "used_ffs" que é "TRUE". Para as duas observações adicionais para cada data, pescaria, dia do torneio e pescador, preciso preencher as duas linhas restantes com "ffs_period" e "used_ffs", que não estão presentes. Por exemplo, a primeira observação em que "ffs_period" é P1 e "used_ffs" é TRUE, eu precisaria preencher duas linhas com a mesma data, pescaria, dia do torneio e pescador, em que "ffs_period" é P2 e P3 e used_ffs é FALSE para ambos. O resultado final seria assim:
data | pesca | dia_do_torneio | pescador | período_ffs | usados_ffs |
---|---|---|---|---|---|
30/01/2025 | Lago Conroe | 1 | Vila Martin | P1 | verdadeiro |
30/01/2025 | Lago Conroe | 1 | Vila Martin | P2 | FALSO |
30/01/2025 | Lago Conroe | 1 | Vila Martin | P3 | FALSO |
31/01/2025 | Lago Conroe | 2 | Vila Martin | P1 | FALSO |
31/01/2025 | Lago Conroe | 2 | Vila Martin | P2 | verdadeiro |
31/01/2025 | Lago Conroe | 2 | Vila Martin | P3 | FALSO |
2025-02-1 | Lago Conroe | 3 | Vila Martin | P1 | verdadeiro |
2025-02-1 | Lago Conroe | 3 | Vila Martin | P2 | FALSO |
2025-02-1 | Lago Conroe | 3 | Vila Martin | P3 | FALSO |
2025-02-13 | Corrente Harris | 1 | Vila Martin | P1 | FALSO |
2025-02-13 | Corrente Harris | 1 | Vila Martin | P2 | FALSO |
2025-02-13 | Corrente Harris | 1 | Vila Martin | P3 | verdadeiro |
Isso é possível? Ou é muito complicado?
tidyr::complete
Seria bom aqui. Como você quer todosffs_period
para cada combinação existente de data/pescaria/torneio/pescador, podemos usarnesting
para limitar a saída às combinações existentes dessas combinações e especificar os níveis desejados paraffs_period
garantir que todas as três apareçam para cada combinação, mesmo que nem todas as três apareçam nos dados de exemplo.Também podemos usar o
fill
parâmetro para especificar oused_ffs
valor das linhas adicionadas.Resultado