5

我正在阅读dopersR 中的 csv 文件“”。

dopers <- read.csv(file="generalDoping_alldata2.csv", head=TRUE,sep=",")

读完文件后,我必须做一些数据清理。例如在country列中,如果它说

“美国”或“美国”

我想用"USA"

我想确保,如果这个词是" United States "or "United State ",即使是它们,我的代码也应该工作。我想说的是,即使之前和之后有任何字符"United States"被替换为"USA". 我知道我们可以sub()为此目的使用函数。我在网上查找并找到了这个,但是我不明白是什么"^" "&" "*" "."。有人可以解释一下。

dopers$Country = sub("^UNITED STATES.*$", "USA", dopers$Country)
4

1 回答 1

5

鉴于你的例子,

s <- c(" United States", " United States ", "United States ")

您可以通过以下方式定义与它们匹配的正则表达式模式

pat <- "^.*United State.*$"

这里,^代表字符串的开头和$结尾,而 .代表任何字符并*定义重复(从零到任意)。您可以尝试修改后的模式,例如

pat <- "^[ ]*United State[ ]*$" # only ignores spaces
pat <- "^.*(United State|USA).*$" # only matches "  USA" etc.

然后替换由

gsub(pat, "USA", s)
于 2013-10-12T17:20:22.680 回答