Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merge r brings error "'by' must specify uniquely valid columns"

Tags:

merge

r

R doesn't like me today...

I have two tables asembled via cbind(). Tab 1 (dwd_nogap) is

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

     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"

My merge command is:

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

In my opinion the command is correct, but it's apparently not doing well...

Error in fix.by(by.x, x) : 'by' must specify uniquely valid columns
like image 448
user3519324 Avatar asked Apr 16 '15 10:04

user3519324


2 Answers

Rather give names of the column on which you want to merge:

exporttab <- merge(x=dwd_nogap, y=dwd_gap, by.x='x1', by.y='x2', fill=-9999)
like image 73
Colonel Beauvel Avatar answered Oct 25 '22 15:10

Colonel Beauvel


This is what I tried for a right outer join [as per my requirement]:

m1 <- merge(x=companies, y=rounds2, by.x=companies$permalink, 
            by.y=rounds2$company_permalink, all.y=TRUE)
# Error in fix.by(by.x, x) : 'by' must specify uniquely valid columns
m1 <- merge(x=companies, y=rounds2, by.x=c("permalink"), 
            by.y=c("company_permalink"), all.y=TRUE)

This worked.

like image 44
Smita Hundekar Avatar answered Oct 25 '22 17:10

Smita Hundekar