Предположим, у меня есть этот набор данных:
Variable <- c("GDP")
Country <- c("Brazil", "Chile")
df <- data.frame(Variable, Country)
Я хочу изменить ВВП на ВВП "Country_observation", то есть ВВП Бразилии и ВВП Чили.
У меня гораздо больший набор данных, и я пытался сделать это, используя
df %>% mutate(Variable = replace(Variable, Variable == "GDP", paste(Country, "GDP")))
Однако он напечатает первое наблюдение переменной «Страна» для каждого наблюдения в «Переменной», которое удовлетворяет условию. Есть ли способ заставить paste() использовать значение Country в строке, к которой оно применяется?
Я пытался использовать rowwise(), и это не сработало. Я также пробовал следующий код и столкнулся с той же проблемой
df %>% mutate(Country = ifelse(Country == "Chile", replace(Variable, Variable == "GDP",
paste(Country, "GDP")), Variable))
Спасибо всем!
ИЗМЕНИТЬ
Я не могу просто использовать объединение, потому что мне все еще нужна переменная Country. Итак, обходной путь, который я нашел, был (у меня было несколько других наблюдений, которые мне нужно было изменить их имена)
df %>% mutate(Variable2 = ifelse(Variable == "GDP", paste0(Country, " ",
Variable), Variable)) %>%
mutate(Variable2 = replace(Variable2, Variable2 ==
"CR", "Country Risk")) %>%
mutate(Variable2 = replace(Variable2, Variable2
== "EXR", "Exchange Rate")) %>%
mutate(Variable2 = replace(Variable2,mVariable2 == "INTR", "Interest Rate"))
%>% select(-Variable) %>%
select(Horizon, Variable = Variable2, Response, Low, Up, Shock, Country,
Status)
EDIT 2 Мой желаемый результат был
Horizon Variable Response Shock Country
1 Brazil GDP 0.0037 PCOM Brazil
2 Brazil GDP 0.0060 PCOM Brazil
3 Brazil GDP 0.0053 PCOM Brazil
4 Brazil GDP 0.0033 PCOM Brazil
5 Brazil GDP 0.0021 PCOM Brazil
6 Brazil GDP 0.0020 PCOM Brazil
paste
выглядит нормально, но без использованияreplace
. Вы также можете использоватьunite
из пакетаtidyr
. - person AntoniosK   schedule 09.11.2017