我的数据框中有两列,左列表示 id,右列包含递增的整数,有些是连续的,有些不是。没有重复的整数。我的目标是获得每个连续整数的平均数id
例如:
这是我的数据集的片段
station summary id
> 数据
身份时刻
4448 1 11725
4540 1 11726
5457 1 11739
5519 1 11740
11733 1 11861
11797 1 11862
12020 1 11865
12313 1 11869
14576 1 11914
23314 1 12088
166 2 11644
278 2 11646
339 2 11647
407 2 11648
476 2 11649
545 2 11650
673 2 11652
737 2 11653
982 2 11657
1035 2 11658
在上面的示例中,id 1具有以下连续整数个数moment- 2, 2, 2, 1, 1, 1, 1 - 所以平均值为 1.428
id 2在 - 1, 5, 2, 2 中具有以下连续整数个数moment- 所以平均值为 2.5
真正的数据集有大约 200 行和 300 个唯一 ID——我想要每个 ID 的平均值。
我知道您必须以某种方式使用 rle() 函数,并且我可以使用以下代码找到最大数量:
聚合(数据$时刻,数据['id'],FUN=函数(d)最大(rle(差异(d))$长度))
如何取平均值?
> 输入(数据)
结构(列表(id = c(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), 力矩 = c(11725L, 11726L,
11739L、11740L、11861L、11862L、11865L、11869L、11914L、12088L、
11644L, 11646L, 11647L, 11648L, 11649L, 11650L, 11652L, 11653L,
11657L, 11658L)), .Names = c("id", "moment"), row.names = c(4448L,
4540L、5457L、5519L、11733L、11797L、12020L、12313L、14576L、
23314L、166L、278L、339L、407L、476L、545L、673L、737L、982L、
1035L), 类 = "data.frame")