r - 使用 groupby 和不同窗口长度的滚动平均
问题描述
我正在尝试根据 R 中的 ID 列和测量时间标签创建列的滚动平均值,但我遇到了很多麻烦。
这是我的数据框的样子:
ID Measurement Value
A 1 10
A 2 12
A 3 14
B 1 10
B 2 12
B 3 14
B 4 10
问题是我的每个 ID 的测量计数从 9 到 76 不等,所以我还没有找到一个解决方案,可以在处理不同的窗口长度时为每个 ID 创建滚动平均值列。
我的目标是这样的数据框:
ID Measurement Value Average
A 1 10 NA
A 2 12 11
A 3 14 12
B 1 10 NA
B 2 12 11
B 3 14 12
B 4 10 11.5
解决方案
使用您的数据:
library(dplyr)
dat %>%
group_by(Id) %>%
mutate(Avrg = cumsum(Value)/(1:n()))
# A tibble: 7 x 4
# Groups: Id [2]
Id Measurement Value Avrg
<chr> <int> <int> <dbl>
1 A 1 10 10
2 A 2 12 11
3 A 3 14 12
4 B 1 10 10
5 B 2 12 11
6 B 3 14 12
7 B 4 10 11.5
数据:
structure(list(Id = c("A", "A", "A", "B", "B", "B", "B"),
Measurement = c(1L, 2L, 3L, 1L, 2L, 3L, 4L),
Value = c(10L, 12L, 14L, 10L, 12L, 14L, 10L)
),
class = "data.frame", row.names = c(NA, -7L))
PS我很确定10的平均值是10,而不是NA
推荐阅读
- powershell - 无法使用 powershell.exe 运行 -Command 开关内的代码
- java - Lombok 构建器包范围
- postgresql - 在 Postgres 中使用 Serializable 事务级别的意外失败
- powershell - 如何为所有文件添加后缀
- sql - 对项目进行计数以及谁查看了它们的查询
- python - Pandas cut 方法为值生成错误的类别
- docker - 将分离的进程变成异步任务
- kentico-kontent - Kentico 云中的 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
- c# - 如何将值插入单元格而不将其转换为所需的数据类型?
- c++ - C++ Boost 正则表达式与标准库正则表达式匹配结果