聚合 R 数据集中列中的过滤数据

问题描述 投票:0回答:1

我在R中有一个与此类似的数据集

df

day   team   data
1     A      5
1     B      2
1     C      1
2     A      2
2     B      3
2     C      1
3     A      0
3     B      2
3     C      1
...   ...    ...

我现在想根据

day
team
有条件地计算数据平均值,并将其添加到数据集中的每一行。平均值应根据团队和所有先前的线路计算,其中日期与线路中的日期相比在一定范围内。该范围应由变量定义。

例如,如果

range <- 2
应按如下方式计算每个团队的平均值:

day   team   data   mean
1     A      5      5
1     B      2      2
1     C      1      1
2     A      2      3.5
2     B      3      2.5
2     C      1      1
3     A      0      1
3     B      2      2.5
3     C      1      1
...   ...    ...    ...

我怎样才能实现这一目标,例如使用

aggregate()

r aggregate
1个回答
0
投票

如果您需要使用

aggregate

n <- 2
aggregate(df, data~team, \(x)rowMeans(embed(c(rep(NA, n-1), x), n), na.rm = TRUE))

  team data.1 data.2 data.3
1    A    5.0    3.5    1.0
2    B    2.0    2.5    2.5
3    C    1.0    1.0    1.0
© www.soinside.com 2019 - 2024. All rights reserved.