Как сопоставить каждое значение вектора со словарем ключ-значение?

У меня есть вектор имен (vector_name) и один кадр данных (df_dictionary) с двумя переменными: ключ имени и значение пола.

Мне нужно сопоставить каждое значение vector_name с df_dictionary, чтобы получить соответствующий vector_gender.


person CptNemo    schedule 27.08.2013    source источник
comment
Неплохо бы привести небольшой пример. Может быть, какой-то образец ввода и желаемый результат.   -  person Simon O'Hanlon    schedule 27.08.2013


Ответы (2)


Как насчет match?

#  Dictionary
df <- data.frame( Name = c("John" , "Mary" , "Steve" , "Jordan" , "Bob" , "Alex"),
                  Gender = c( "M" , "F" , "M" , "F" , "F" , "F" ) )
#        Name Gender
#1   John      M
#2   Mary      F
#3  Steve      M
#4 Jordan      F
#5    Bob      F
#6   Alex      F

# Names to match on
vnames <- c( "John" , "Jordan" , "Kingsley" )

#  Get gender - note: no match for Kingsley so NA returned    
df$Gender[ match( vnames , df$Name ) ]
#[1] M    F    <NA>
#Levels: F M
person Simon O'Hanlon    schedule 27.08.2013

Кража данных Саймона:

##  Dictionary
df <- data.frame( Name = c("John" , "Mary" , "Steve" , "Jordan" , "Bob" , "Alex"),
    Gender = c( "M" , "F" , "M" , "F" , "F" , "F" ) )

## Names to match on
vnames <- c( "John" , "Jordan" , "Kingsley" )

##  Get gender - note: no match for Kingsley so NA returned 
library(qdap)
lookup(vnames, df)

## > lookup(vnames, df)
## [1] "M" "F" NA


## or
vnames %l% df  

## > vnames %l% df  
## [1] "M" "F" NA 
person Tyler Rinker    schedule 27.08.2013