Dataframes.jl оставил эквивалент объединения для массивов - PullRequest
0 голосов
/ 27 июня 2018

Существует ли такой пакет, который может оставлять присоединяемые массивы, во многом аналогично тому, как dataframes.jl оставлял присоединяемые массивы данных?

1 Ответ

0 голосов
/ 27 июня 2018

Если в качестве массивов используются сложные записи, вероятно, лучше всего использовать DataFrames.jl. Поместите массивы в датафреймы, а затем соедините, затем извлеките с помощью конструктора Array.

Если вы точно знаете, какой будет логика левого соединения, вы должны вместо этого эффективно использовать понимание списка. На логическом уровне левого соединения общего назначения, однако, лучше использовать кадры данных.

julia> using DataFrames
julia> names = DataFrame(ID = [20, 40], Name = ["John Doe", "Jane Doe"])
2×2 DataFrames.DataFrame
│ Row │ ID │ Name     │
├─────┼────┼──────────┤
│ 1   │ 20 │ John Doe │
│ 2   │ 40 │ Jane Doe │

julia> jobs = DataFrame(ID = [20, 40], Job = ["Lawyer", "Doctor"])
2×2 DataFrames.DataFrame
│ Row │ ID │ Job    │
├─────┼────┼────────┤
│ 1   │ 20 │ Lawyer │
│ 2   │ 40 │ Doctor │

julia> arr = Array(join(names, jobs, on = :ID, kind = :left))
2×3 Array{Any,2}:
20  "John Doe"  "Lawyer"
40  "Jane Doe"  "Doctor"

.. или

julia> n = Array(names)
2×2 Array{Any,2}:
20  "John Doe"
40  "Jane Doe"

julia> j = Array(jobs)
2×2 Array{Any,2}:
20  "Lawyer"
40  "Doctor"

julia> [ [n[i,2], j[i,2]] for i in 1:size(n)[1] if n[i,1] == j[i,1]]
2-element Array{Array{String,1},1}:
String["John Doe", "Lawyer"]
String["Jane Doe", "Doctor"]
...