所以我有多个运动数据库,并希望在同一列的两列中(而不只是一个)累积目标总和。特别是:
[年度队。赢分。赢队。输分。输1982纽约州立大学科特兰分校2波士顿大学01982年马萨诸塞州3罗切斯特(纽约州)11982年普林斯顿1乔治梅森01982哈佛3布朗11982年康涅狄格州2纽约州立大学科特兰分校01982年UCF 2马萨诸塞州11982年北卡罗来纳州4普林斯顿01982年路易2哈佛11982 UCF 3康涅狄格州11982年北卡罗莱纳州2 Mo.-St.路易11982年,康涅狄格州2 Mo.-St.路易11982年北卡罗莱纳州2 UCF 0
应该是
[年度队。赢分。赢队。输分。输1982纽约州立大学科特兰分校2波士顿大学01982年马萨诸塞州3罗切斯特(纽约州)11982年普林斯顿1乔治梅森01982哈佛3布朗11982年康涅狄格州2苏伊·科特兰21982年UCF 2马萨诸塞州41982年北卡罗来纳州4普林斯顿11982年路易2哈佛41982年UCF 5康涅狄格州31982年北卡罗莱纳州6 Mo.-St.路易31982年5月路易41982年北卡罗来纳州8 UCF 5
这是我作为用户第一次使用stackoverflow!很抱歉,如果格式不符合网站的标准。我之所以问这个问题,是因为我不想运行将所有数字都放在下一列并从那开始累积总和的代码。我只想按原样做。
我有R的背景,但是我一直在开发Python的技能。我更喜欢前者。我对dplyr有点熟悉。
编辑:我不希望这按年!只需遍历所有行,并根据文本值(团队)进行累积和(目标)。
这是在R中使用tidyverse
的一种方法。
此方法涉及将数据整理成长格式,以便由团队计算累积分数(包括获胜和亏损的分数)。
之后,重新变宽形式。我希望这会有所帮助。
library(tidyverse)
df %>%
mutate(rn = row_number()) %>%
pivot_longer(cols = c(-Year, -rn), names_to = c(".value", "outcome"), names_pattern = "(\\w+).(\\w+)") %>%
group_by(team) %>%
mutate(cum_points = cumsum(points)) %>%
pivot_wider(id_cols = c(Year, rn), names_from = c(outcome, outcome), values_from = c(team, cum_points), names_sep = ".") %>%
select(Year, ends_with("Win"), ends_with("Lose"))
输出
# A tibble: 12 x 5
Year team.Win cum_points.Win team.Lose cum_points.Lose
<int> <chr> <int> <chr> <int>
1 1982 SUNY_Cortland 2 Boston_College 0
2 1982 Massachusetts 3 Rochester_(NY) 1
3 1982 Princeton 1 George_Mason 0
4 1982 Harvard 3 Brown 1
5 1982 Connecticut 2 SUNY_Cortland 2
6 1982 UCF 2 Massachusetts 4
7 1982 North_Carolina 4 Princeton 1
8 1982 Mo.-St._Louis 2 Harvard 4
9 1982 UCF 5 Connecticut 3
10 1982 North_Carolina 6 Mo.-St._Louis 3
11 1982 Connecticut 5 Mo.-St._Louis 4
12 1982 North_Carolina 8 UCF 5