Tôi đang cố tạo ma trận trang web và thời gian sự kiện. Trong trường hợp của tôi, một khi sự kiện đã xảy ra ("1") nó là vĩnh viễn và không thể quay trở lại một "0". Khi một ô trong một cột là "1", tôi đang cố gắng đưa ô liền kề vào các cột tiếp theo sang phải bằng dấu "1" (xem ví dụ dưới đây).R dplyr: Tìm một giá trị cụ thể trong một cột, sau đó thay thế ô liền kề trong các cột tiếp theo sang bên phải với giá trị đó
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
Tôi đã tìm thấy một số mã đầy hứa hẹn sử dụng dplyr ví dụ: (Replacing more than one elements with replace function hoặc Apply function to each column in a data frame observing each columns existing data type) thay thế giá trị, mặc dù tôi không chắc chắn về cách chỉ định ô liền kề trong đối số cột tiếp theo.
Lời xin lỗi của tôi nếu câu hỏi này không rõ ràng, đây là bài đăng đầu tiên của tôi trên StackOverflow.
Cảm ơn bạn.
Cảm ơn Osssan, tôi chưa bao giờ nghe nói về gói 'vườn thú', đây chính xác là những gì tôi cần. Đây là tất cả những câu trả lời thực sự tuyệt vời, tôi thích nhìn thấy tất cả những cách khác nhau mà bạn có thể làm tương tự :) – CarlaBirdy