【问题标题】:Replace varying pattern in multiple rows替换多行中的不同模式
【发布时间】:2017-11-29 11:27:59
【问题描述】:
我有一个使用报废数据的数据框 (Catcher2)。对于MarketValue 列,我只想知道每个人的价格,例如40,00 磨坊。欧元
我尝试使用gsub(),但无法删除“€”之后的所有信息。还有一个问题是玩家之间的日期不同,因此有没有我可以用来运行整个数据框的代码而不是每个日期的代码行?
【问题讨论】:
标签:
r
web-scraping
gsub
stringr
【解决方案1】:
您可以通过以下代码使用sub 函数:
x <- "40,00 Mill. € Last change"
sub("\\€.*", "€", x)
[1] "40,00 Mill. €"
【解决方案2】:
您可以尝试下面的 gsub 命令,使用正则表达式,对美元符号进行负向回溯,以标记其位置并删除其后的所有内容。
Catcher2$MarketValue <- gsub("(?<=\\$).*","", as.character(Catcher2$MarketValue), perl = T)
【讨论】:
-
Barbara 提出的具有sub() 函数的解决方案比我的要快得多,并且对于您的简单案例来说是一个更好的解决方案。因此,仅当您需要提取更复杂的模式时才使用正则表达式解决方案。