SECR场合栏via R:如何为序列中的每个日期指定一个数字,但如果某个日期不是';你不在那个专栏里吗?
我正在尝试为空间显式捕获-再捕获模型(secr)格式化数据,我们需要一个专栏。我每年都要对整个数据集进行90天的记录,每一行都是一个单独的动物记录,记录在一个摄像机陷阱上。假设第一天是2019年2月1日。在“场合”栏中,它应该得到“1”。最后一天,5月1日,应该在该栏中得到“90” 然而,这里有一个陷阱:在那个时间段的每个日期都没有一个捕获,有些日子有多个捕获。因此,“dt”列中的日期可能如下所示:SECR场合栏via R:如何为序列中的每个日期指定一个数字,但如果某个日期不是';你不在那个专栏里吗?,r,date,R,Date,我正在尝试为空间显式捕获-再捕获模型(secr)格式化数据,我们需要一个专栏。我每年都要对整个数据集进行90天的记录,每一行都是一个单独的动物记录,记录在一个摄像机陷阱上。假设第一天是2019年2月1日。在“场合”栏中,它应该得到“1”。最后一天,5月1日,应该在该栏中得到“90” 然而,这里有一个陷阱:在那个时间段的每个日期都没有一个捕获,有些日子有多个捕获。因此,“dt”列中的日期可能如下所示: for (m in mydateseq) { data_new = da
for (m in mydateseq) {
data_new = data_old %>%
arrange(dt) %>%
mutate(occasion = if_else(dt %in% mydate,
true = mydateseq[m],
false = NA_real_)
}
for (m in mydateseq) {
data_new = data_old %>%
arrange(dt) %>%
mutate(occasion = if_else(dt %in% mydate,
true = mydateseq[m],
false = NA_real_)
}
data_new = data_old %>%
arrange(dt) %>%
mutate(occasion = as.numeric(factor(dt))
这让我的桌子看起来像这样:
for (m in mydateseq) {
data_new = data_old %>%
arrange(dt) %>%
mutate(occasion = if_else(dt %in% mydate,
true = mydateseq[m],
false = NA_real_)
}
mydttemp <- as.POSIXct("2014-02-01")
mydates = seq.POSIXt(from = mydttemp, length.out = 7, by = "1 year")
`
第二,我为每年制定了90天的期限。我使用循环和列表中每年经过的对象文件号(因此,使用mydates[fileNumber]
表达式)
最后,我将这些输入到代码的同一部分中,如下所示:
for (m in mydateseq) {
data_new = data_old %>%
arrange(dt) %>%
mutate(occasion = if_else(dt %in% mydate,
true = mydateseq[m],
false = NA_real_)
}
其想法是,如果在创建的列表中找到与“dt”列中的任何日期匹配的日期,它会将该日期的相应数字放入一列中。但这给了我一个充满NAs的专栏。有什么想法吗
提前谢谢。从日期中减去第一个日期,再加上1:
# test data
s <- c("2019-02-01", "2019-02-04", "2019-02-05", "2019-02-06",
"2019-02-07", "2019-02-07", "2019-02-07")
d <- as.Date(s)
as.integer(d - d[1] + 1L)
## [1] 1 4 5 6 7 7 7
测试数据
嗨,很遗憾,我相信这只解决了示例中的问题,而不是整个问题。