2015-05-31 4 views
4

Я пытаюсь сделать стиль базы данных слияния с по меньшей мере двух идентификаторов с использованием различных типов данных кадра:Dataframe присоединиться на нескольких идентификаторов

merged_df = join(df1, df2, on = (:ID1 :ID2), kind = :outer) 

Это, кажется, не допускается в base.join.

Я могу сделать эту работу с какой-то многословной функцией, но я хочу посмотреть, есть ли более чистый способ?

+0

Одно решения (к моей проблеме), чтобы создать уникальный идентификатор из двух идентификаторов. ID_unique = ID1 * ID2, а затем слияние с этим идентификатором. Тем не менее, было бы неплохо иметь возможность объединить несколько идентификаторов в качестве базовых функций. –

+0

Это похоже на хороший запрос функции в [DataFrames.jl] (https://github.com/JuliaStats/DataFrames.jl). Кажется, что любой ответ здесь может легко стать запросом на перенос, чтобы официально реализовать функциональность. –

ответ

0

В ответ на ARM, это выглядит так близко, но фактический синтаксис:

merged_df = присоединиться (df1, df2, на = [[: ID1,: ID2]], вид =: внешний)

я получаю сообщение об ошибке при использовании вашего метода

4
merged_df = join(df1, df2, on = [:ID1, :ID2], kind = :outer) 

DataFrames является удивительным, но есть много полезных вещей, которые не задокументированы ... Там несколько вещей, которые я означая, чтобы добавить к документации в стыки и разделенным применяются, объединить разделы.

+0

Плюс один (+1) для дополнительной документации. – rickhg12hs

+0

Спасибо за ответ, но я получаю сообщение об ошибке здесь: names = DataFrame (ID = [1, 2], Name = ["John Doe", "Jane Doe"]) jobs = DataFrame (ID = [1, 2 ], Job = ["Lawyer", "Doctor"]) merge_df = join (имена, задания, on = [: ID: Job], kind =: internal) ERROR: type: typeassert: expected Union (Array {Symbol, 1 }, Symbol), получил Array {Symbol, 2} –

+0

Вы правы - я пропустил запятую, когда набрал ее на своем телефоне выше. Теперь это исправлено. – ARM

Смежные вопросы