我的数据框中有两列,左列表示 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")