У меня целая группа беспозвоночных, идентифицированных с различным таксономическим разрешением.Однако я хотел бы прочитать каждую строку в моем фрейме данных, а затем заполнить пропуски тем, что находится слева от пустого пространства, без перезаписи любых существующих записей.
Мой фрейм данныхвыходит далеко за границы, показанные здесь, поэтому я должен иметь возможность сделать это для любого количества строк в кадре данных, но иметь возможность остановиться в указанной точке (например, род / вид).
Это частьмоего фрейма данных:
df <- structure(list(Phylum = structure(c(2L, 2L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Annelida", "Arthropoda"
), class = "factor"), Class = structure(c(1L, 5L, 3L, 1L, 4L,
4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("Arachnida",
"Chilopoda", "Clitellata", "Insecta", "Malacostraca"), class = "factor"),
Subclass = structure(c(2L, 1L, 1L, 1L, 1L, 3L, 1L, 3L, 3L,
3L, 3L, 3L, 3L, 3L), .Label = c("", "Acari", "Pterygota"), class = "factor"),
Order = structure(c(1L, 2L, 1L, 3L, 4L, 5L, 1L, 6L, 6L, 6L,
6L, 6L, 6L, 6L), .Label = c("", "Amphipoda", "Araneae", "Archaeognatha",
"Blattodea (cockroaches)", "Coleoptera"), class = "factor"),
Suborder = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), .Label = "", class = "factor"), Family = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L), .Label = c("",
"Carabidae"), class = "factor"), Subfamily = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L), .Label = c("",
"Platyninae"), class = "factor"), `Genus/Species` = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L), .Label = c("",
"Ctenognathus sp."), class = "factor")), row.names = 7:20, class = "data.frame")
Итак, для второй строки во фрейме данных это будет выглядеть примерно так:
Phylum Class Subclass Order Suborder
Arthropoda Malacostraca Malacostraca Amphipoda Amphipoda
Family Subfamily Genus/Species
Amphipoda Amphipoda Amphipoda
Как я могу это сделать?Есть ли хороший способ сделать это с Tidyverse?