【发布时间】:2022-10-06 00:12:52
【问题描述】:
我有一个像这样的数据框:
home_team <- c(\'Team A\', \'Team B\', \'Team C\', \'Team D\', \'Team B\', \'Team F\')
away_team <- c(\'Team B\', \'Team C\', \'Team D\', \'Team A\', \'Team F\', \'Team A\')
home_team_score_pre <- c(300, 150, 600, 800, 50, 450)
away_team_score_pre <- c(550, 340, 100, 208, 412, 18)
winning_team <- c(\'Team A\', \'Team C\', \'Team C\', \'Team D\', \'Team F\', \'Team F\')
res <- c(16, 25, 11, 4, 22, 9)
home_team_score_change <- c(16, -25, 11, 4, -22, 9)
away_team_score_change <- c(-16, 25, -11, -4, 22, -9)
home_team_score_post <- c(316, 125, 611, 804, 28, 459)
away_team_score_post <- c(534, 365, 89, 204, 434, 9)
输出:
home_team away_team home_team_score_pre away_team_score_pre winning_team res home_team_score_change away_team_score_change
1 Team A Team B 300 550 Team A 16 16 -16
2 Team B Team C 150 340 Team C 25 -25 25
3 Team C Team D 600 100 Team C 11 11 -11
4 Team D Team A 800 208 Team D 4 4 -4
5 Team B Team F 50 412 Team F 22 -22 22
6 Team F Team A 450 18 Team F 9 9 -9
home_team_score_post away_team_score_post
1 316 534
2 125 365
3 611 89
4 804 204
5 28 434
6 459 9
每支球队在比赛开始前都有一个分数(home_team_score_pre 和away_team_score_pre)。
比赛结束后,调整后的分数是结果 (res),这取决于他们是赢还是输了比赛。例如。第 1 行主队是 Team A 获胜,res 是 16,所以 Team A 的得分增加了 16,而 Team B 输了,他们的得分减去了 16。总体结果是赛后得分(home_team_score_post 和away_team_score_post)。
我想要做的是更新home_team_score_pre 和away_team_score_pre,方法是查找每支球队上一场比赛,然后在home_team_score_post 或away_team_score_post 上输入值)。
因此,例如,如果接下来的两行是:
home_team away_team home_team_score_pre away_team_score_pre
1 Team C Team B
2 Team A Team F
然后我想查找\'Team C\'(第 3 行)进行的最后一场比赛,并将home_score_post (611) 输入home_team_score_pre column。
同样,对于Team B(第 5 行)玩的最后一场游戏,将home_score_post (28) 输入home_team_score_pre column。
这些值可以来自任一列,因为它是球队最后一场比赛的值,所以他们可能是主队或客队。
另外,如果球队正在玩它的第一场比赛(因此没有以前的值),我想输入一个默认值 100。
因此,最终输出将是:
home_team away_team home_team_score_pre away_team_score_pre winning_team res home_team_score_change away_team_score_change
1 Team A Team B 100 100 Team A 16 16 -16
2 Team B Team C 84 100 Team C 25 -25 25
3 Team C Team D 125 100 Team C 11 11 -11
4 Team D Team A 89 116 Team D 4 4 -4
5 Team B Team F 59 100 Team F 22 -22 22
6 Team F Team A 122 112 Team F 9 9 -9
7 Team C Team B 136 37 Team B 12 49 131
8 Team B Team F 49 131 Team F 10 0 0
home_team_score_post away_team_score_post
1 116 84
2 59 125
3 136 89
4 93 112
5 37 122
6 131 103
7 124 49
8 39 141
-
你想要的最终输出是什么?将其包含在您的问题中
-
此外,您的问题主题谈到查找以前的值,但您表达的方式似乎找到了最新的值而不是以前的值。哪个是哪个?
-
抱歉,我添加了最终输出作为示例。是的,最新值是我正在寻找的。感谢您的澄清。
标签: r