我正在尝试创建一个数据框,其中存在一列,该列保存表示正数和负数的运行长度的值,如下所示:
Time V Length
0.5 -2 1.5
1.0 -1 1.5
1.5 0 0.0
2.0 2 1.0
2.5 0 0.0
3.0 1 1.75
3.5 2 1.75
4.0 1 1.75
4.5 -1 0.75
5.0 -3 0.75
The Length
列汇总该值为正值或负值的时间长度。零点被赋予0
因为它们是一个拐点。如果没有零分隔符号变化,则对拐点两侧的值进行平均。
我试图估算这些值花费正数或负数的时间。我已经尝试过这个for
循环取得了不同程度的成功,但我想避免循环,因为我正在处理非常大的数据集。
我花了一些时间看sign
and diff
因为它们被用于这个关于符号变化的问题 https://stackoverflow.com/questions/10033696/r-identifying-a-row-prior-to-a-change-in-sign/10033781#10033781。我也看过这个问题 https://stackoverflow.com/questions/32308636/r-how-to-sum-values-from-rows-only-if-the-key-value-is-the-same-and-also-if-the使用transform
and aggregate
对连续的重复值求和。我觉得我可以将它与sign
and/or diff
,但我不确定如何将这些总和追溯分配给创建它们的范围,或者如何处理在拐点上取平均值的点。
任何建议,将不胜感激。这是示例数据集:
dat <- data.frame(Time = seq(0.5, 5, 0.5), V = c(-2, -1, 0, 2, 0, 1, 2, 1, -1, -3))