首页 > 解决方案 > 如何使用从 R 中的另一个数据帧计算的值创建数据帧?

问题描述

我这周开始使用 R,如果这是一个简单的问题,请原谅。我想从我之前创建的另一个数据框创建一个数据框。第一个数据框是:

HomeTeam   AwayTeam  Hgoals Agoals  

Parma       Juventus    0    1   
Fiorentina  Napoli      3    4   
Udinese     Milan       1    0   
Cagliari    Brescia     0    1   
Roma        Genoa       3    3   
Sampdoria   Lazio       0    3   
Spal        Atalanta    2    3 
....

现在我想创建一个数据框,显示整个赛季球队主客场进球的平均值。像这样的东西:

Team        Hgoals(Avg)  Agoals(Avg) 

Parma          2.5          1.4   
Fiorentina     1.3          2.1   
Udinese        1.8          1.4   

标签: rdataframe

解决方案


我们可以使用:

merge(
  with(df,aggregate(list(Hgoals.Avg = Hgoals),list(Team = HomeTeam), mean)),
  with(df,aggregate(list(Agoals.Avg = Agoals),list(Team = AwayTeam), mean)),
  by="Team",all=T
)

         Team Hgoals.Avg Agoals.Avg
1    Cagliari          0         NA
2  Fiorentina          3         NA
3       Parma          0         NA
4        Roma          3         NA
5   Sampdoria          0         NA
6        Spal          2         NA
7     Udinese          1         NA
8    Atalanta         NA          3
9     Brescia         NA          1
10      Genoa         NA          3
11   Juventus         NA          1
12      Lazio         NA          3
13      Milan         NA          0
14     Napoli         NA          4

如果需要这种替代解释。

with(df,aggregate(list(goals.for.Avg = Hgoals, goals.agaist.Avg = Agoals),list(Team = HomeTeam), mean))

        Team goals.for.Avg  goals.agaist.Avg
1   Cagliari             0                 1
2 Fiorentina             3                 4
3      Parma             0                 1
4       Roma             3                 3
5  Sampdoria             0                 3
6       Spal             2                 3
7    Udinese             1                 0

推荐阅读