R:如何在不同对象的列表中添加每个对象的值

时间:2017-07-05 16:57:36

标签: r

我正在尝试计算与每个不同对象/团队相关联的值,以确定哪个团队具有最高价值。 我创建了一个矩阵,其中一列表示主队,一列是访问团,最后一列表示值为1,0或NA。如果该值为1,则主队获胜,0表示访问团队获胜,NA表示出现平局。

以下是我的矩阵(获奖者)的样子:

del df['Max']

完整矩阵是703行。

我希望计算数值,看看哪支球队赢得了最多的比赛。

我已经尝试了一系列方法来解决这个问题,但我对R来说是全新的,我有点困惑。任何帮助表示赞赏!

好。我对R和任何编码都很陌生,因此当被要求输入()我的代码时,我相信这就是我被要求做的事情。感谢大家!伟大的社区!

      home_team      visit_team     home_outcomes
 [1,] "Brewers"      "Marlins"      "1"          
 [2,] "Rockies"      "Giants"       "0"          
 [3,] "Rangers"      "Cardinals"    "0"          
 [4,] "Nationals"    "Cubs"         "1"          
 [5,] "Braves"       "Nationals"    "1"          
 [6,] "Pirates"      "Reds"         "1"          
 [7,] "Rays"         "Mariners"     "1"          
 [8,] "Orioles"      "Dodgers"      "0"          
 [9,] "Marlins"      "Reds"         "1"          
[10,] "Mets"         "Royals"       "1"  

1 个答案:

答案 0 :(得分:0)

下面是一段快速代码,输出一个包含两列的data.frame - 一个是团队名称,另一个是团队获得的胜利数量(主场或客场)。

此代码假定您按照问题中的提法构建数据。我打电话给矩阵' myMatrix'但是你可以用它代替你。

uniqueTeams <- c(myMatrix[,1],myMatrix[,2]) uniqueTeams <- unique(uniqueTeams)

首先将home和away team列中的所有团队名称连接起来,然后将此向量缩短为仅包含唯一值(每个团队一个向量元素)。

numTeams <- length(uniqueTeams)
teamWins <- data.frame("Team Name"=uniqueTeams,"No. of Wins"=rep(0,numTeams))

此部分计算非团队的数量,并创建data.frame,我们将在稍后存储结果。

for (i in 1:numTeams){

  temp <- as.matrix(myMatrix[ myMatrix[,1] == uniqueTeams[i] & myMatrix[,3] == "1",3])
  teamWins[i,2] <- nrow(temp)

  temp <- as.matrix(myMatrix[ myMatrix[,2] == uniqueTeams[i] & myMatrix[,3] == "0",3])
  teamWins[i,2] <- teamWins[i,2] + nrow(temp)

}

最后,我遍历每个独特的团队名称。首先,我为该团队创建一个临时子矩阵,当他们在家里玩并赢得并分配行数作为我的 &#39;无。胜利&#39;输出数据框中的列。我还检查同一个团队是否已经取消并赢得并将该子矩阵中的行数添加到总值中。

剩下的是一个包含两列的data.frame。一个是团队的名称,另一个是前面提到的总体胜利数。

可能有更好的方法可以解决这个问题,但这正是我想到的。