如何使用字符串函数替换确切的字符串?

时间:2018-08-02 07:31:32

标签: r stringr

我正在尝试使用stringr函数替换一列中的确切字符串。

我尝试过的数据集是这样的:

data <- data.frame(
  column = c("Value", "Values", "Value", "Values")
)

data

  column
1 Value
2 Values
3 Value
4 Values

我想用“值”替换“值”。我尝试了str_replace(data$column, "Value", "Values"),但这会导致以下不必要的替换:

[1] "Values"  "Valuess" "Values"  "Valuess"

我希望输出为:

[1] "Values"  "Values" "Values"  "Values"

4 个答案:

答案 0 :(得分:1)

可以请您尝试以下操作:

sub("Value[a-z]+","Values",data$column)

输出如下。

sub("Value[a-z]+","Values",data$column,perl = TRUE)
[1] "Values" "Values" "Values" "Values"

说明: 以下内容仅出于解释目的。

sub(             ##using sub function of R whose method is: sub(regex_to_match_in_current_value,new_value_which_should_be_there_after_match,variable)
"Value[a-z]+",   ##mentioning Value string with [a-z]+ alphabets till their regular sequences.
"Value",         ##Substitute above match of strings with only string Value here.
data$column)     ##Mentioning data frame data with its column.

示例数据来自:

data <- data.frame(
  column = c("Value", "Values", "Value", "Values")
)

答案 1 :(得分:1)

以下是使用正则表达式的几种可能性:

x <- c("value", "values")
str_replace(x, "value$", "values") #method 1
str_replace(x, "value\\b", "values") #method 2
str_replace(x, "value(?!s)", "values") #method 3

以上所有返回相同的

[1] "values" "values"

简短说明:第一种方法在字符串的末尾查找“值”。符号$与字符串的结尾匹配。

第二种方法查找“值”,后跟单词边界。

第三个方法寻找“值”,后跟除符号“ s”之外的任何内容。

您可以找到有关字符串和正则表达式的有用备忘单 here。 希望这会有所帮助。

答案 2 :(得分:0)

只需简单的字符串比较即可解决问题。

data[data$col == "Value","col"] = "Values"

答案 3 :(得分:0)

data $ column <-ifelse(data $ column =='Value','Values','Values')