如果我有一个包含诸如"Q7", "Q2"
等元素的分类变量的数据,如何将其替换为"7 Queen", "2 Queen"
等?
问问题
88 次
2 回答
0
正则表达式
(Q)(\d)
替换正则表达式
$2 Queen
描述
1st Capturing group (Q)
Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
\d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
注意:每个字母都需要其中一个
于 2014-04-13T21:24:31.750 回答
0
对于初学者,如果您还包含您已经尝试过的代码,您将充分利用提出问题。那就是说...
对于大型数据集,可能不是解决此问题的最有效方法,但这两种方法似乎在您的示例中运行良好。 example(strsplit)
有一个很好的字符串反转函数,我们可以使用它。
> strReverse <- function(x)
sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")
> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"
另一种方法是使用paste
> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
于 2014-04-13T22:43:38.667 回答