사이트 및 시간 이벤트 행렬을 생성하려고합니다. 제 경우에는 이벤트가 발생하면 ("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에 대한 첫 번째 게시물입니다.
감사합니다.
감사합니다. Osssan, 나는 '동물원'패키지에 대해 들어 본 적이 없으며, 이것이 내가 필요한 것입니다. 이것들은 모두 정말 좋은 답변입니다, 나는 당신이 똑같은 일을 할 수있는 모든 다른 방법을 보는 것을 좋아합니다. :) – CarlaBirdy