【发布时间】:2018-06-18 14:53:06
【问题描述】:
在某些区域(名称)的各个观察点(obs)对鸟类进行了观察。 start和end时间都取了,时间差(diff_corr)用修正因子重新计算,所以不是简单的difftime开始-结束-间隔。
我现在需要将这些值“拆分”为“合适的”间隔(15 分钟,例如 10:15:00、10:30:00,...),然后按区域聚合(name) 以便能够在这些干净的 15 分钟间隔内绘制出这些区域存在鸟类的图。
所以,为了更清楚一点:观察可能从 10:14 开始,一直持续到 10:25,因此它跨越了 10:00-10:15 和 10:15-10:30 的时间间隔,所以我得到的值应该被分割并相应地分配到适当的间隔中。
在更复杂的设置中,一次观察可能跨越 3 或 4 个间隔,因此也必须在此处相应地拆分值。
最后一步是聚合每个区间的所有观察部分并绘制它们。
我已经搜索了几天的解决方案,但只找到了使用 cut 和 breaks 重新排列间隔的非常简单的示例,但从未示例如何处理关联值,而是简单的频率计数。
示例数据:
structure(list(obs = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("b",
"C2", "Dürnberg2"), class = "factor"), name = c("C2", "C2",
"C2", "C2", "C2", "C2", "C2", "C2", "C2", "b", "981", "1627",
"b", "b", "981", "1627", "b", "b", "b", "b"), start = structure(c(1495441500,
1495441590, 1495441650, 1495441680, 1495447380, 1495447410, 1495447530,
1495447560, 1495447580, 1496996580, 1496996580, 1496996580, 1496996760,
1496996820, 1496996820, 1496996820, 1496997180, 1496997300, 1496997420,
1496998260), class = c("POSIXct", "POSIXt"), tzone = ""), end = structure(c(1495441590,
1495441650, 1495441680, 1495441800, 1495447410, 1495447530, 1495447560,
1495447580, 1495447620, 1496996760, 1496996760, 1496996760, 1496996820,
1496997180, 1496997180, 1496997180, 1496997300, 1496997420, 1496997540,
1496998320), class = c("POSIXct", "POSIXt"), tzone = ""), diff_corr = c(1.46739130434783,
0.978260869565217, 0.489130434782609, 1.95652173913043, 0.489130434782609,
1.95652173913043, 0.489130434782609, 0.326086956521739, 0.652173913043478,
2.96703296703297, 2.96703296703297, 2.96703296703297, 0.989010989010989,
5.93406593406593, 5.93406593406593, 5.93406593406593, 1.97802197802198,
1.97802197802198, 1.97802197802198, 0.989010989010989)), .Names = c("obs",
"name", "start", "end", "diff_corr"), row.names = c("1", "9",
"7", "8", "3", "2", "4", "5", "6", "13", "13.1", "13.2", "22",
"11", "11.1", "11.2", "12", "23", "15", "16"), class = "data.frame")
附言我很难正确命名我的问题,因此非常感谢任何提示(不仅限于此)
一个小例子的新尝试: 按比例将值分配给间隔(然后将相等的间隔相加)
start end value new values in new 15-min-intervals
10:03:00 10:14:00 11 ---> 10:00:00 = 11
10:14:00 10:16:00 2 ---> 10:00:00 = 1 ; 10:15:00 = 1
10:00:00 10:35:00 40 ---> 10:00:00 = 40/35*15 ; 10:15:00 = 40/35*15 ; 10:30:00 = 40/35*5
10:15:00 10:30:00 12 ---> 10:15:00 = 12
【问题讨论】:
-
为了确保我理解正确,您想获得所有
diff_corr值的平均值或累积总和吗?其他列是字符串,因此它们不能被求和/平均等。 -
您的意思是将时间间隔 (diff_corr) 列重新格式化为 15 分钟时间戳吗?
-
@Gautam 是的,我需要 diff_corr 的总和,但是对于四分之一小时的“不错”间隔,它的比例正在下降。
-
@SaleemKhan diff_corr 不是时间间隔,而是在开始和结束间隔内重新计算的观察分钟数。这些应该在一小时内分成 15 分钟间隔的比例部分,然后汇总。