【发布时间】:2014-10-13 00:27:38
【问题描述】:
问题:
我有一个数据框,其中有一列显示事件是否发生,以及月、日和年的列。最后 3 个被转换为日期向量。我想制作一个矩阵来显示事件是否在给定时间段内发生。在这个矩阵中,一行代表一个站点,一列代表一个日期。我能够编写一个 for 循环来执行此操作,但似乎可能有更好的方法来执行此操作,无论是使用 apply 还是其他一些基本操作。你会怎么做呢?
守则:
#Initialize events matrix
events = matrix(FALSE,nrow(predicted),ncol(predicted))
# Mark the presence of events
for (i in 1:nrow(events)){
if ((days_from_start[i]>-1)&(days_from_start[i]<=ncol(predicted)))
events[i,days_from_start[i]] = !input_data$Event[i]
}
背景:
下一步是将事件矩阵与具有相同形状的各种模型输出进行比较。与矩阵大小相比,数据框中的事件相对较少; (可能不正确的)假设是数据框完全列出了所有事件,并且未列出的矩阵单元没有经历事件。我对 R 非常陌生,所以如果您认为我正在努力解决这个问题,我很想听听解决同一问题的其他方法。
数据:
> input_data$Event[1:5]
[1] FALSE FALSE FALSE FALSE TRUE
> input_data$Year[1:5]
[1] 2010 2010 2011 2010 2010
> days_from_start[1:5]
Time differences in days
[1] 834 1018 1106 847 1055
> dim(predicted)
[1] 649 732
【问题讨论】:
标签: r date for-loop matrix dataframe