że mam te ramki dwóch danych:W R, Scalanie dwóch ramek danych, wypełnić dół półwyrobów
big.table <- data.frame("idx" = 1:100)
small.table <- data.frame("idx" = sample(1:100, 10), "color" = sample(colors(),10))
Chcę połączyć je razem tak:
merge(small.table, big.table, by = "idx", all.y=TRUE)
idx color
1 1 <NA>
2 2 <NA>
3 3 salmon2
4 4 <NA>
5 5 <NA>
6 6 <NA>
...
20 20 <NA>
21 21 <NA>
22 22 blue4
23 23 grey99
24 24 <NA>
25 25 <NA>
26 26 <NA>
...
Teraz muszę wypełnij wartości w kolumnie "kolor" w dół tabeli, tak aby wszystkie NA były ustawione na wartości, które pojawiają się wcześniej w tabeli.
UWAGI: Problem dotyczy pliku dziennika wygenerowanego z programu komputerowego, a nie w żadnym standardowym formacie dziennika. Bloki linii w tym pliku dziennika należą do "procesu" określonego w pierwszym wierszu bloku. Wyciągnąłem informacje z odpowiednich wierszy pliku dziennika, z których większość należy do procesu, i utworzyłem tabelę danych zawierającą te informacje (numer linii, sygnatura czasowa itp.). Teraz muszę wypełnić tę tabelę nazwy procesów, które odpowiadają każdej linii z small.table, która ma numer wiersza.
Może nie być "procesu" (kolor w powyższym przykładzie) dla linii na górze tabeli big.table. Te wiersze powinny pozostać NA.
Po rozpoczęciu pierwszego "procesu", każda linia między linią początkową procesu a kolejną należy do pierwszego procesu. Po rozpoczęciu drugiego procesu każda linia między linią startową procesu a kolejną linią startową procesu należy do drugiego procesu. I tak dalej. Linie procesowe nigdy nie są tym samym numerem linii, co inne linie, które zebrałem w ramce danych pliku dziennika.
Mój plan to utworzenie pliku big.table, który będzie sekwencją wszystkich numerów wierszy dziennika i scalenie go z tabelą. Następnie mogę "wypełnić" nazwę procesu i połączyć dużą tabelę z plikiem dziennika, zachowując tylko plik dziennika z wszystkimi elementami dołączonymi do niego.
Jestem otwarty na inne podejścia.