我有一个带有因子变量的数据框。我想搜索一个模式并替换包含至少部分匹配的所有结果。
clrs <- c("blue", "light blue", "red", "rose", "ruby", "yellow", "green", "black", "brown", "royal blue")
dfx <- data.frame(colors=clrs, Amount=sample(100,10))
dfx
colors Amount
1 blue 23
2 light blue 95
3 red 45
4 rose 46
5 ruby 63
6 yellow 9
7 green 33
8 black 62
9 brown 34
10 royal blue 18
在这个例子中,我想在colors变量中找到包含单词blue的记录,并用&#34; Blue&#34;替换整个内容。
所以我的结果应该是这样的......
colors Amount
1 Blue 23
2 Blue 95
3 red 45
4 rose 46
5 ruby 63
6 yellow 9
7 green 33
8 black 62
9 brown 34
10 Blue 18
我使用grep找到了我要替换的那些
grep("blue", dfx$colors, value = TRUE)
[1] "blue" "light blue" "royal blue"
我尝试过使用gsub:
gsub("blue", "Blue", dfx$colors)
但这并没有改变任何事情。
我已尝试在此网站上发布过类似问题的其他帖子,包括此内容......
R - Replace entire strings based on partial match
但是没有一个答案似乎有效。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
这是您链接到的问题的第一个答案。只需使用
dfx$colors[grepl("blue", dfx$colors)] <- "Blue"
使用grepl
为向量中的每个元素返回TRUE / FALSE值。
另外,请确保您的列是字符变量而不是首先因素
dfx$colors < - as.character(dfx$colors)