Замена нескольких элементов из вектора из индекса - PullRequest
0 голосов
/ 29 января 2019

У меня есть фрейм данных с именем Main с именами брокеров и их номерами:

 Main <- data.frame(
   Number = c(3,70,40,8), 
   Broker = c("XP","HSBC","MORGAN STANLEY","UBS"))

Затем есть вектор сделок, заключенных этими брокерами:

Broker <- c(70,70,8,8,8,8,8,8,8,40)

I´Я хотел бы заменить элементы Broker их соответствующими элементами в Main и создать вывод, такой как Broker_Name:

Broker_Name <- c("HSBC","HSBC","UBS","UBS","UBS","UBS","UBS","UBS","UBS","MORGAN STANLEY")

Уже пробовал gsub и сливался безуспешно.

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Вы можете попробовать это решение:

Broker_Name <- c(1:length(Broker))

for(ii in 1:length(Broker)) {

  x <- Broker[ii]

  Broker_Name[ii] <- as.character(Main[Main[,1] == x,2])

  }
0 голосов
/ 29 января 2019

Вы хотите отобразить значения.Для этого есть функция:

library(dplyr)
Broker <- c(70,70,8,8,8,8,8,8,8,40)
Broker_Name <- mapvalues(Broker,Main$Number,as.character(Main$Broker))
0 голосов
/ 29 января 2019

Вы пробовали путем слияния?

Main <- data.frame(Number = c(3,70,40,8), Broker =      c("XP","HSBC","MORGAN STANLEY","UBS"))

Broker_Num <- c(70,70,8,8,8,8,8,8,8,40)



Broker_Name <- as.character(merge(as.data.frame(Broker_Num),Main,
                     by.y="Number",
                     by.x="Broker_Num",
                     all.x=T,
                     all.y=F,
                     sort=F)$Broker)
...