Próbuję utworzyć macierz witryny i czasu zdarzenia. W moim przypadku, gdy zdarzenie miało miejsce ("1"), jest trwałe i nie może wrócić do "0". Gdy komórka w kolumnie ma wartość "1", próbuję wypełnić sąsiednią komórkę w kolejnych kolumnach po prawej stronie za pomocą "1" (patrz przykład poniżej).R dplyr: Znajdź konkretną wartość w kolumnie, a następnie zastąp sąsiednią komórkę w kolejnych kolumnach po prawej stronie o tej wartości
site <- c('A','B','C','D','E','F','G') #site
time <- c(0,1,4,0,3,2,0) # time in which even occured
event <- c(0,1,1,0,1,1,0) # did a event occur
data <- data.frame(site, time, event)
site.time.matrix <- cast(data, site~time)
# This is the output # This is the desired output
#site 0 1 2 3 4 #site 0 1 2 3 4
# A 0 NA NA NA NA # A 0 0 0 0 0
# B NA 1 NA NA NA # B 0 1 1 1 1
# C NA NA NA NA 1 # C 0 0 0 0 1
# D 0 NA NA NA NA # D 0 0 0 0 0
# E NA NA NA 1 NA # E 0 0 0 1 1
# F NA NA 1 NA NA # F 0 0 1 1 1
# G 0 NA NA NA NA # G 0 0 0 0 0
Znalazłem obiecujący kod za pomocą dplyr np. (Replacing more than one elements with replace function lub Apply function to each column in a data frame observing each columns existing data type), która zastępuje wartości, chociaż nie jestem pewien, jak określić sąsiednią komórkę w kolejnych argumentach kolumn.
Moje przeprosiny, jeśli to pytanie jest niejasne, to mój pierwszy wpis na StackOverflow.
Dziękuję.
Dziękuję Osssan, nigdy nie słyszałem o pakiecie "zoo", to jest dokładnie to, czego potrzebowałem. To są naprawdę świetne odpowiedzi, uwielbiam widzieć różne sposoby na zrobienie tego samego :) – CarlaBirdy