首页 > 解决方案 > 如何根据其他两列的条件对 R 中两列的值求和?

问题描述

在此处输入图像描述

在此处输入图像描述

       HomeTeam    AwayTeam FTHG FTAG FTR HST AST
1   Aston Villa       Wigan    0    2   A   5   7
26    Liverpool Aston Villa    1    3   A  12   4
34  Aston Villa      Fulham    2    0   H   4   3
45   Birmingham Aston Villa    0    1   A   7   5
48  Aston Villa  Portsmouth    2    0   H   5  12
58    Blackburn Aston Villa    2    1   H   7   5
76  Aston Villa    Man City    1    1   D   6   7

我有一个数据框“mydata”的一部分,如上所示。它显示了英格兰足球比赛的结果。

我想总结像阿斯顿维拉这样的球队的进球数,可能是通过循环遍历数据框。当他们是主队时,这需要计算维拉的 FTHG,而当他们是客队时,需要计算维拉的 FTAG。

我试过了

with(mydata, sum(FTHG[HomeTeam == "Aston Villa"] | FTAG[AwayTeam == "Aston Villa"]))

sum(subset(mydata,(HomeTeam == "Aston Villa")$FTHG|(AwayTeam == "Aston Villa")$FTAG))

sum(subset(mydata,(HomeTeam == "Aston Villa")$FTHG|subset(mydata,(AwayTeam == "Aston Villa")$FTAG)))

没有一个奏效。

我想要的是要显示的总数。这可以在不分别汇总主客场数据然后相加的情况下完成吗?

标签: rsummultiple-conditions

解决方案


也许我们可以做

sum(unlist(Map(function(x, y) x[y],  mydata[c("FTHG", "FTAG")], 
  list(mydata$HomeTeam=="Aston Villa", mydata$AwayTeam=="Aston Villa"))))

推荐阅读