2015-04-16 18 views
14

R nie podoba mi dzisiaj ...Merge r przynosi błąd „«przez»należy jednoznacznie określić poprawnych kolumn”

Mam dwie tabele asembled poprzez cbind(). Tab 1 (dwd_nogap) jest

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) wynosi:

 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" 

Moje polecenia scalania:

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

Moim zdaniem komenda jest poprawna , ale najwyraźniej nie ma się dobrze ...

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

Czy rzeczywiście studiowałeś przykłady "? Scalania" ?. Musisz podać rzeczywiste nazwy kolumn, takie jak 'by.x =" x1 ",, by.y =" x2 "' –

+0

Mój błąd był jeszcze bardziej banalny, zapomniałem umieścić ''. Próbowałem rzeczywistych nazw kolumn, ale z x1 zamiast "x1". – user3519324

+0

Nie wiedziałem, że 'merge' obsługuje' fill'. To była niezła premia. Nie jest nawet wspomniany w '? Merge'. –

Odpowiedz

15

Raczej nadać nazwy kolumny, na których chcesz się połączyć:

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

To co próbowałem na prawe sprzężenie zewnętrzne [jak na moje wymogu]

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

Błąd w pliku fix.by (wg.x, x): "od" musi określać jednoznacznie ważne kolumny:

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

To zadziałało.