我有一个数据框。其中一列的值如下:
WIND
WINDS
HIGH WIND
等
其他值。现在我想用“WIND”重命名其中包含“WIND”变量的每个值。我知道如何找到我需要替换的值:
grep("WIND", df$col1)
但不是如何替换这些值。感谢。
答案 0 :(得分:5)
您可以使用grepl和replace
为这些值的原始列进行子集化df$col1[grepl("WIND",df$col1)]<-"WIND"
答案 1 :(得分:1)
更新:有点像脑筋,agrep
实际上并没有在grep上添加任何内容,但您只需将agrep
替换为grep
。如果你的某些单词的根目录略有不同但仍想匹配,那就可以了。
以下是使用agrep
的方法:
> wind.vec
[1] "WINDS" "HIGH WIND" "WINDY" "VERY WINDY"
> wind.vec[agrep("WIND", wind.vec)] <- "WIND"
> wind.vec
[1] "WIND" "WIND" "WIND" "WIND"
关于agrep
的好处是它匹配近似,所以“WINDY”被替换。请注意我使用向量执行此操作,但您可以通过将wind.vec
替换为my.data.frame$my.wind.col
来轻松扩展到数据框。
agrep
返回大致匹配的索引,然后允许我使用[<-
替换运算符将大致匹配的值替换为“WIND”。