2015-04-16 8 views
14

R non come me oggi ...Merge R porta di errore " 'da' deve specificare colonne valide unicamente"

Ho due tabelle asembled via cbind(). Tab 1 (dwd_nogap) è

x1     col1_x1  col2_x1  
A "1982 12 01 00:00" "  0.4" "   0" 
B "1982 12 02 00:00" "  -0.5" "   0" 
C "1982 12 03 00:00" "  -0.2" "   0" 
D "1982 12 04 00:00" "   -1" "  0.1" 
E "1982 12 05 00:00" "  -0.9" "   0" 
F "1982 12 06 00:00" "  3.7" "  4.1" 

Tab 2 (dwd_gap) è:

 x2     col1_x2  col2_x2  
[1,] "1982 12 01 00:00" "  0.4" "   0" 
[2,] "1982 12 03 00:00" "  -0.2" "   0" 
[3,] "1982 12 04 00:00" "   -1" "  0.1" 
[4,] "1982 12 05 00:00" "  -0.9" "   0" 
[5,] "1982 12 06 00:00" "  3.7" "  4.1" 
[6,] "1982 12 07 00:00" "   7" "  5.8" 

mio comando merge è:

exporttab <- merge(x=dwd_nogap,y=dwd_gap,by.x=dwd_nogap[,1],by.y=dwd_gap[,1], fill=-9999) 

A mio parere il comando è corretto , ma apparentemente non sta andando bene ...

Error in fix.by(by.x, x) : 'by' must specify uniquely valid columns 
+2

Studiate effettivamente gli esempi di "? Merge'". È necessario specificare i nomi effettivi delle colonne come 'by.x =" x1 ",, by.y =" x2 "' –

+0

Il mio errore era ancora più banale, ho dimenticato di posizionare il ''. Ho provato i nomi effettivi delle colonne ma con x1 invece di 'x1'. – user3519324

+0

Non sapevo che 'merge' supporta' fill'. E 'stato un bel bonus. Non è nemmeno menzionato in "? Merge". –

risposta

15

Piuttosto dare i nomi della colonna su cui si desidera unire:

exporttab <- merge(x=dwd_nogap, y=dwd_gap, by.x='x1', by.y='x2', fill=-9999) 
1

Questo è quello che ho cercato per il diritto outer join [come per il mio requisito]

m1 <- merge(x=companies,y=rounds2,by.x = companies$permalink,by.y = rounds2$company_permalink,all.y=TRUE)

Errore in fix.by (by.x, x): 'by' deve specificare colonne valide in modo univoco

m1 <- merge(x=companies,y=rounds2,by.x = c("permalink"),by.y = c("company_permalink"),all.y = TRUE)

Questo ha funzionato.