Я пытаюсь создать матрицу сайта и время события. В моем случае, как только событие произошло («1»), оно является постоянным и не может вернуться к «0». Когда ячейка в столбце «1», я пытаюсь заполнить соседнюю ячейку в последующих столбцах справа с помощью «1» (см. Ниже пример).R dplyr: Найти определенное значение в столбце, а затем заменить соседнюю ячейку в последующих столбцах справа с этим значением
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
Я нашел многообещающий код, используя dplyr, например. (Replacing more than one elements with replace function или Apply function to each column in a data frame observing each columns existing data type), который заменяет значения, хотя я не уверен, как указать соседнюю ячейку в следующем столбце.
Приносим извинения, если этот вопрос непонятен, это мое первое сообщение в StackOverflow.
спасибо.
Thank's Osssan, я никогда не слышал о пакете «зоопарк», это именно то, что мне нужно. Все это действительно отличные ответы, мне нравится видеть все разные способы, которыми вы можете сделать то же самое :) – CarlaBirdy