I have two data frames.
DATA
Name                Type            Code
gabapentine         Pharmaceutical  60142-96-3
Glyphosate          Pesticide       1071-83-6
Guanylurea          Pharmaceutical  141-83-3
hydrochlorthiazide  Pharmaceutical  58-93-5
Values
Name                Value           Code
gabapentine         0,2             60142-96-3
Glyphosate          1,8             1071-83-6
Urea                1,2             141-83-3
hydrochlorthiazide  0,5             58-93-5
I want to add the column type from Data to Values, by matching the columns Name and Code. 
I know how to match with just one column, like this:
Values$type = Data$type[match(Values$Name, Data$Name)]
But now I want to take into account also the Code, since some names don't match. 
Is there a way to do it in just one line, like
Values$type = Data$type[match((Values$Name, Data$Name) | (Values$Code, Data$Code))]
That didn't work for me, so I would like to know the right way to do it.
I tried using merge like in other questions
merge(Values, Data,all.x = TRUE)
but in Guanylurea from dataframe Data I get type NA when it should match Urea from dataframe Values. The result for that row would be Type equal to  Pharmaceutical, but the Names don't match exactly. So how can I add a partial match into functions match or merge? Or is there an alternative to these two?
 
     
    