gpt4 book ai didi

R,在 data.frame 中找到连续时间步长的平均长度

转载 作者:行者123 更新时间:2023-12-05 02:31:10 25 4
gpt4 key购买 nike

我有以下 data.frame,其中 time 列按升序排序:

colA=c(1,2,5,6,7,10,13,16,19,20,25,40,43,44,50,51,52,53,68,69,77,79,81,82)
colB=rnorm(24)

df=data.frame(time=colA, x=colB)

如何计算并取 time 列中观察到的连续时间步长的平均值?

具体来说,我需要根据连续观察对 time 列中的行进行分组,例如1,2 和 5,6,7 和 19,20 和 43,44 等等...然后取每组长度的平均值。

最佳答案

您可以像这样对连续观察的集群进行分组:

df$group <- c(0, cumsum(diff(df$time) != 1)) + 1

给出:

df
#> time x group
#> 1 1 0.7443742 1
#> 2 2 0.1289818 1
#> 3 5 1.4882743 2
#> 4 6 -0.6626820 2
#> 5 7 -1.1606550 2
#> 6 10 0.3587742 3
#> 7 13 -0.1948464 4
#> 8 16 -0.2952820 5
#> 9 19 0.4966404 6
#> 10 20 0.4849128 6
#> 11 25 0.0187845 7
#> 12 40 0.6347746 8
#> 13 43 0.7544441 9
#> 14 44 0.8335890 9
#> 15 50 0.9657613 10
#> 16 51 1.2938800 10
#> 17 52 -0.1365510 10
#> 18 53 -0.4401387 10
#> 19 68 -1.2272839 11
#> 20 69 -0.2376531 11
#> 21 77 -0.9268582 12
#> 22 79 0.4112354 13
#> 23 81 -0.1988646 14
#> 24 82 -0.5574496 14

您可以通过以下方式获得这些组的长度:

rle(df$group)$lengths
#> [1] 2 3 1 1 1 2 1 1 2 4 2 1 1 2

连续组的平均长度为:

mean(rle(df$group)$lengths)
#> [1] 1.714286

和每组内x的平均值使用

tapply(df$x, df$group, mean)
#> 1 2 3 4 5 6 7
#> 0.4366780 -0.1116876 0.3587742 -0.1948464 -0.2952820 0.4907766 0.0187845
#> 8 9 10 11 12 13 14
#> 0.6347746 0.7940166 0.4207379 -0.7324685 -0.9268582 0.4112354 -0.3781571

关于R,在 data.frame 中找到连续时间步长的平均长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71661341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com