【发布时间】:2021-12-28 05:03:49
【问题描述】:
需要一些正则表达式帮助。有一些大学篮球维加斯传播的数据框。本质上,如果 VegasOpen 中的字符串以数字开头,后跟“o”表示“over”或“u”表示 under,那么我需要第三个元素。但如果字符串不是以前面提到的条件开头,那么我想检索第一个元素。
如果主队受到青睐,则字符串以比赛的大小(144.5、139 等)开头。
如果客队受青睐,则优先列出他们受青睐的金额(第 3 行和第 4 行)。
理想情况下,从 HOME 团队的角度来看,我最终会得到一个带有 VegasOpen 点差的数据框。以第 3 行和第 4 行为例,其中客队受到青睐:客队的线分别为 -3 和 -6。但从主队的角度来看,应该显示为正 3 和正 6。
这是我的数据:
home_team_name away_team_name VegasOpen
Syracuse Brown 144½u-10-10½ -10
Xavier Connecticut 139u-10-3 -10
Northern Illinois Ball State -3 -10137u-10
Pittsburgh Notre Dame -6 -10127½u-10
Boise State Fresno State 119½u-10-4 -10
St. Marys (CA) Yale 132u-10-12½ -10
Texas Tech Alabama State 135½u-10-29 -10
Gonzaga North Alabama 142½u-10-32 -10
Baylor Northwestern State 145½u-10-37 -10
Texas Incarnate Word 128½u-10-31 -10
Southern Illinois Grambling State 126½u-10-16 -10
期望的输出:
home_team_name away_team_name VegasOpen_home
Syracuse Brown -10.5
Xavier Connecticut -3
Northern Illinois Ball State 3
Pittsburgh Notre Dame 6
Boise State Fresno State -4
St. Marys (CA) Yale -12.5
Texas Tech Alabama State -29
Gonzaga North Alabama -32
Baylor Northwestern State -37
Texas Incarnate Word -31
Southern Illinois Grambling State -16
@Onyambu 您的代码有效。但是一旦有游戏不可避免地列出“143o”而不是“143u”,它就不起作用了。假设我们的字符串是 143o-15-9½ -10 和 129o-20-13 EV。我怎样才能应用您的正则表达式来解释这些变化?
【问题讨论】:
-
sub('^[^-]+u-[^-]+-([^-]+).*|^(-\\d+).*', '\\1\\2', df$VegasOpen)
标签: r regex dplyr data-manipulation