Guest User

Untitled

a guest
Apr 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. joinAcross2[
  2. list1 : {__?AssociationQ},
  3. list2 : {__?AssociationQ},
  4. sameTest_,
  5. key : (_String | _Key),
  6. jspec : ("Inner" | "Outer" | "Left" | "Right") : "Inner"
  7. ] := Module[{
  8. vals1 = list1[[All, key]]
  9. },
  10. JoinAcross[
  11. list1,
  12. MapAt[
  13. Function[
  14. element,
  15. SelectFirst[vals1, sameTest[element, #] &, element]
  16. ],
  17. list2,
  18. {All, key}
  19. ],
  20. key,
  21. jspec
  22. ]
  23. ];
  24.  
  25. In[208]:= joinAcross2[{<|a -> 1, b -> X|>}, {<|a -> 1., c -> Y|>}, Equal, Key[a]]
  26.  
  27. Out[208]= {<|a -> 1, b -> X, c -> Y|>}
  28.  
  29. Module[{dataset = list2},
  30. dataset[[All, key]] = Map[
  31. Function[element,
  32. SelectFirst[vals1, sameTest[element, #] &, element]
  33. ],
  34. dataset[[All, key]]
  35. ];
  36. dataset
  37. ]
Add Comment
Please, Sign In to add comment