【发布时间】:2020-09-14 17:53:56
【问题描述】:
在我的数据框的获胜者列中,我想删除从左括号开始的所有文本。
搜索stackoverflow.com,我找到了this response,并在我的代码中应用了它的stringr 解决方案,但它不起作用。我的代码没有改变我的输入。
输入:
Year Lg Winner Team
1956 NL Don Newcombe (1 | MVP) Brooklyn (1)
1957 NL Warren Spahn (1 | HOF | ASG) Milwaukee (1)
1958 AL Bob Turley (1 | ASG) New York (1)
这是我希望输出的样子:
Year Lg Winner Team
1956 NL Don Newcombe Brooklyn (1)
1957 NL Warren Spahn Milwaukee (1)
1958 AL Bob Turley New York (1)
输入(dfx):
structure(list(Year = 1956:1958, Lg = structure(c(2L, 2L, 1L), .Label = c("AL",
"NL"), class = "factor"), Winner = structure(c(2L, 3L, 1L), .Label = c("Bob Turley (1 | ASG)",
"Don Newcombe (1 | MVP)", "Warren Spahn (1 | HOF | ASG)"
), class = "factor"), Team = structure(1:3, .Label = c("Brooklyn (1)",
"Milwaukee (1)", "New York (1)"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))
代码:
library(stringr)
dfnoparens <- dfx
str_replace(dfnoparens$Winner, " \\(.*\\)", "")
head(dfnoparens)
【问题讨论】:
-
m <- regexpr('^[^\\(]*', dfnoparens$Winner);regmatches(dfnoparens$Winner, m). -
你需要分配它,即
dfnoparens$Winner <-str_replace(dfnoparens$Winner, " \\(.*\\)", ""),否则不需要包,一个简单的sub就可以了 -
在 Base R 中,您可以使用
sub("\\(.*", "", dfx$Winner) -
当我使用下面的代码分配它时,结果没有改变: library(stringr) dfnoparens
-
你必须把它分配到正确的地方@Metsfan
dfnoparens只是你原来的dfx的副本尝试dfnoparens$newwinner <- str_replace(dfnoparens$Winner, " \(.*\)", "")然后head(dfnoparens)