我正在尝试使用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"
答案 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')