2012-11-21 4 views
8

Ho il seguente due frame di dati:R - Aggiungi valori al frame di dati che corrispondono a un determinati criteri

d <- data.frame(c1 = c("A","A","B","C","A","C","D","D")) 

map <- data.frame(c1 = c("A","B","C","D"), c2 = c(12,14,16,25)) 

Come si aggiunge un'altra colonna denominata "match" per frame di dati d che contiene valori corrispondenti trovati nei dati frame map? Quindi il frame di dati dovrebbe essere simile a:

A 12 
A 12 
B 14 
C 16 
A 12 
C 16 
D 25 
D 25 

Molte grazie in anticipo!

risposta

10

usando la funzione di chiamata match:

d$match <- map$c2[match(d$c1,map$c1)] 

E a causa del modo in cui vengono specificati questi livelli, si potrebbe anche fare:

d$match <- map$c2[d$c1] 

Ma questo funziona solo se ogni riga match corrisponde esattamente i livelli del fattore c1 in ordine.