I have a large matrix `data` that I want to "organize" in a certain way. The matrix has 5 columns and about 2 million rows. The first 4 columns are characteristics of each observation (these are integers) and the last column is the outcome variable I'm interested in (this contains real numbers). I want to organize this matrix in an Array of Arrays. Since `data` is very large, I'm trying to parallelize this operation:

```
addprocs(3)

@everywhere data = readcsv("datalocation", Int)

@everywhere const Z = 65
@everywhere const z = 16
@everywhere const Y = 16
@everywhere const y = 10

@everywhere const arr = Array{Vector}(Z-z+1,Y-y+1,Z-z+1,Y-y+1)

@parallel (vcat) for a1 in z:Z, e1 in y:Y, a2 in z:Z, e2 in y:Y
    arr[a1-z+1,e1-y+1,a2-z+1,e2-y+1] = data[(data[:,1].==a1) & (data[:,2].==e1) & (data[:,3].==a2) & (data[:,4].==e2), end]
end

```

However I get an error when I try to run the for loop:

```
Error: syntax: invalid assignment location

```

After the loop is finished, I would like to have `arr` available to all processors. What am I doing wrong?

EDIT:
The input matrix `data` looks like this (rows in no particular order):

```
16   10   16   10   100
16   10   16   11   200
20   12   21   13   500
16   10   16   10   300
20   12   21   13   500

```

Notice that some rows can be repeated, and some others will have the same "key" but a different fifth column.

The output I want looks like this (notice how I'm using the dimensions of `arr` as "keys" for a "dictionary":

```
arr[16-z+1, 10-y+1, 16-z+1, 10-y+1] = [100, 300]
arr[16-z+1, 10-y+1, 16-z+1, 11-y+1] = [200]
arr[20-z+1, 12-y+1, 21-z+1, 13-y+1] = [500, 500]

```

That is, the element of `arr` at index `(16-z+1, 10-y+1, 16-z+1, 10-y+1)` is the vector `[100, 300]`. I don't care about the ordering of the rows or the ordering of the last column of vectors.