我正在尝试创建一个地点和事件时间的矩阵。就我而言,一旦事件发生(“1”),它就是永久性的并且不能返回到“0”。一旦列中的单元格为“1”,我将尝试用“1”填充右侧后续列中的相邻单元格(请参见下面的示例)。
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 的有前途的代码,例如(使用replace函数替换多个元素 https://stackoverflow.com/questions/28250018/replacing-more-than-one-elements-with-replace-function or 将函数应用于数据框中的每一列,观察每列现有的数据类型 https://stackoverflow.com/questions/7303322/apply-function-to-each-column-in-a-data-frame-observing-each-columns-existing-da)它替换值,尽管我不确定如何在后续列参数中指定相邻单元格。
如果这个问题不清楚,我很抱歉,这是我在 StackOverflow 上的第一篇文章。
谢谢。