#r #dplyr #replace #lapply #gsub
Вопрос:
Как бы я заменил часть значений (вопрос в df1) в соответствии с таблицей поиска (новый текст в именах), которая будет выглядеть так, как в df2. Я предполагаю, что lapplpy с gsub справится с этой задачей, но не могу понять синтаксис!
set.seed(42)
df1 <- data.frame(question = c("Hello - a", "Hello - b", "Goodbye - a", "Goodbye - b"),
variable = rnorm(4))
df1
question variable
1 Hello - a 1.3709584
2 Hello - b -0.5646982
3 Goodbye - a 0.3631284
4 Goodbye - b 0.6328626
names <- data.frame(text = c("Hello", "Goodbye", "Good Morning"),
new.text = c("1", "2", "3"))
names
text new.text
1 Hello 1
2 Goodbye 2
3 Good Morning 3
set.seed(42)
df2 <- data.frame(question = c("1 - a", "1 - b", "2 - a", "2 - b"),
variable = rnorm(4))
df2
question variable
1 1 - a 1.3709584
2 1 - b -0.5646982
3 2 - a 0.3631284
4 2 - b 0.6328626
Комментарии:
1. Не могли бы вы привести пример того, как вы хотите, чтобы результат выглядел? Кроме того, ваша печать df1 вверху, похоже, не имеет правильных значений для столбца «вопрос», в зависимости от того, как вы его определили.
2. Извините, скопировал неправильный df поперек — теперь это должно иметь смысл?
Ответ №1:
Воспользуйся stringr::str_replace_all
—
df1$question <- stringr::str_replace_all(df1$question,
setNames(names$new.text, names$text))
df1
# question variable
#1 1 - a 1.3709584
#2 1 - b -0.5646982
#3 2 - a 0.3631284
#4 2 - b 0.6328626