Как заполнить значения слева направо без перезаписи записей? - PullRequest
0 голосов
/ 19 марта 2019

У меня целая группа беспозвоночных, идентифицированных с различным таксономическим разрешением.Однако я хотел бы прочитать каждую строку в моем фрейме данных, а затем заполнить пропуски тем, что находится слева от пустого пространства, без перезаписи любых существующих записей.

Мой фрейм данныхвыходит далеко за границы, показанные здесь, поэтому я должен иметь возможность сделать это для любого количества строк в кадре данных, но иметь возможность остановиться в указанной точке (например, род / вид).

Это частьмоего фрейма данных:

       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?

1 Ответ

0 голосов
/ 19 марта 2019

Используя пакет zoo, вы можете использовать функцию na.locf после транспонирования матрицы с помощью t().Вы хотите заменить отсутствующие значения на NA до.

library(zoo)
df %>% 
  t() %>%   # Transpose 
  na.locf() %>% # fill columns with previous non NA value
  t() # Transpose back
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...