0

I'm attempting to merge two different dataframes together such that the values of the predict variable in the second data frame is now attached to the values of the mean variable in the first data frame. I have attempted to use full_join, however most values returning n/a except for one, and then just extends the table below itself. I am relatively new to coding and R, so any help would be greatly appreciated.

My first table:

# A tibble: 20 × 6
    sd_RT   seRT bits  valid   value  mean
    <dbl>  <dbl> <chr> <chr>   <chr> <dbl>
 1 0.134  0.0291 0.029 invalid 50    0.734
 2 0.106  0.0232 0.029 valid   50    0.611
 3 0.162  0.0353 0.029 invalid 1     0.812
 4 0.143  0.0313 0.029 valid   1     0.675
 5 0.129  0.0282 0.29  invalid 50    0.742
 6 0.0807 0.0181 0.29  valid   50    0.578
 7 0.129  0.0289 0.29  invalid 1     0.798
 8 0.141  0.0308 0.29  valid   1     0.667
 9 0.162  0.0353 0.53  invalid 50    0.798
10 0.100  0.0219 0.53  valid   50    0.590
11 0.162  0.0353 0.53  invalid 1     0.835
12 0.118  0.0257 0.53  valid   1     0.630
13 0.198  0.0433 0.60  invalid 50    0.798
14 0.101  0.0221 0.60  valid   50    0.595
15 0.148  0.0322 0.60  invalid 1     0.854
16 0.120  0.0261 0.60  valid   1     0.646
17 0.174  0.0379 0.86  invalid 50    0.783
18 0.115  0.0251 0.86  valid   50    0.604
19 0.140  0.0314 0.86  invalid 1     0.830
20 0.133  0.0291 0.86  valid   1     0.650

Second table:

 predict  mean
     <dbl> <dbl>
 1   0.587 0.604
 2   0.800 0.783
 3   0.646 0.650
 4   0.859 0.851
 5   0.593 0.595
 6   0.782 0.798
 7   0.652 0.646
 8   0.841 0.854
 9   0.594 0.590
10   0.778 0.798
11   0.654 0.630
12   0.837 0.835
13   0.600 0.591
14   0.761 0.742
15   0.660 0.667
16   0.820 0.819
17   0.606 0.611
18   0.744 0.734
19   0.665 0.675
20   0.804 0.812

Code I'm using:

temp3 <- full_join(e1RTbits, temp2, by = c("mean", "predict"))
Output:
# A tibble: 39 × 7
     sd_RT    seRT bits  valid   value  mean predict
     <dbl>   <dbl> <chr> <chr>   <chr> <dbl>   <dbl>
 1  0.134   0.0291 0.029 invalid 50    0.734  NA    
 2  0.106   0.0232 0.029 valid   50    0.611  NA    
 3  0.162   0.0353 0.029 invalid 1     0.812  NA    
 4  0.143   0.0313 0.029 valid   1     0.675  NA    
 5  0.129   0.0282 0.29  invalid 50    0.742  NA    
 6  0.0807  0.0181 0.29  valid   50    0.578  NA    
 7  0.129   0.0289 0.29  invalid 1     0.798  NA    
 8  0.141   0.0308 0.29  valid   1     0.667  NA    
 9  0.162   0.0353 0.53  invalid 50    0.798  NA    
10  0.100   0.0219 0.53  valid   50    0.590   0.594
11  0.162   0.0353 0.53  invalid 1     0.835  NA    
12  0.118   0.0257 0.53  valid   1     0.630  NA    
13  0.198   0.0433 0.60  invalid 50    0.798  NA    
14  0.101   0.0221 0.60  valid   50    0.595  NA    
15  0.148   0.0322 0.60  invalid 1     0.854  NA    
16  0.120   0.0261 0.60  valid   1     0.646  NA    
17  0.174   0.0379 0.86  invalid 50    0.783  NA    
18  0.115   0.0251 0.86  valid   50    0.604  NA    
19  0.140   0.0314 0.86  invalid 1     0.830  NA    
20  0.133   0.0291 0.86  valid   1     0.650  NA    
21 NA      NA      NA    NA      NA    0.604   0.587
22 NA      NA      NA    NA      NA    0.783   0.800
23 NA      NA      NA    NA      NA    0.650   0.646
24 NA      NA      NA    NA      NA    0.851   0.859
25 NA      NA      NA    NA      NA    0.595   0.593
26 NA      NA      NA    NA      NA    0.798   0.782
27 NA      NA      NA    NA      NA    0.646   0.652
28 NA      NA      NA    NA      NA    0.854   0.841
29 NA      NA      NA    NA      NA    0.798   0.778
30 NA      NA      NA    NA      NA    0.630   0.654
31 NA      NA      NA    NA      NA    0.835   0.837
32 NA      NA      NA    NA      NA    0.591   0.600
33 NA      NA      NA    NA      NA    0.742   0.761
34 NA      NA      NA    NA      NA    0.667   0.660
35 NA      NA      NA    NA      NA    0.819   0.820
36 NA      NA      NA    NA      NA    0.611   0.606
37 NA      NA      NA    NA      NA    0.734   0.744
38 NA      NA      NA    NA      NA    0.675   0.665
39 NA      NA      NA    NA      NA    0.812   0.804
Jan
  • 2,245
  • 1
  • 2
  • 16
Tom_465
  • 1
  • 1
  • Could you share your desired output after the merge? What is meant by "such that the values of the predict variable in the second data frame is now attached to the values of the mean variable in the first data frame"? – Jan Jul 06 '23 at 05:53
  • `dplyr`'s join functions use a named vector for association: `..., by = c("A" = "B", "C" = "D", ...` (note equality signs and quotes). – I_O Jul 06 '23 at 06:00
  • When you want to share data, you can use the `dput()` function to create an easily copy and pasteable bit of code. – Godrim Jul 06 '23 at 06:36
  • Hi @Jan I'd like it so the table above has the predict values to be in the same row as their associated mean values. Row 10 of the output table is how I wanted it to look, but for some reason R has duplicated the rest of the mean values below the table and put the predict value next to it. Sorry, I'm very new to all of this. – Tom_465 Jul 06 '23 at 06:58
  • Read about [joins](https://stackoverflow.com/q/1299871/680068), we need to use left join. And just a note, joining on numbers with decimals is not a good idea. – zx8754 Jul 06 '23 at 07:48

1 Answers1

1

You should change the full join into a left join and reduce by to "mean".

temp3 <- left_join(e1RTbits, temp2, by = "mean")
Jan
  • 2,245
  • 1
  • 2
  • 16