2015-11-20 12 views
5

Ho 4 dataframe nel mio ambiente globale. Sono chiamati propens1, propens2, propens3 e propens4. Ho un quinto file, che si chiama "bmi" e voglio unire bmi con tutti e quattro i file propen. Posso unirli singolarmente usando dplyr joins o base merge, ma mi chiedevo se esistesse un modo per unirlo con una singola istruzione invece di 4.unione di più frame di dati nell'ambiente globale in un file

Questo è quello che ho provato, ma non funziona? Qualsiasi suggerimento è accolto e apprezzato.

flist=ls(pattern="propen") 
sapply(flist,function(x){merge(x,bmi,by="cfact",all.x=T)}) 

risposta

6

Se si dispone di più fotogrammi di dati correlati, è meglio averli tutti in una lista invece di averli tutti separati nel contesto globale. Sulla base della sua dichiarazione

Essi sono chiamati propens1, propens2, propens3 e propens4

siamo in grado di raccogliere tutti i fotogrammi di dati con

datalist <- mget(ls(pattern = "propens[1-4]")) 

Poi dal momento che si desidera quattro frame di dati in risultato, tutto ciò che dobbiamo fare è eseguire merge() su ognuno di questi. Ora che abbiamo i frame di dati in un elenco, possiamo farlo facilmente con lapply().

lapply(datalist, merge, y = bmi, by = "cfact", all.x = TRUE) 
Problemi correlati