问题
I have a 332 x 332 distance matrix with distances between all possible pairs of stations. I need to transform this matrix into a data.frame with three columns - start.id, end.id, and distance.
I have tried the melt
function from the reshape2
package but this is not giving the right result
Here is a snippet of the data
mat 72 79 82 83 116 119 120 127 128 137 143 144 146 147 150 151 152 153 157 160 161 72 NA 6.43 7.458 11.546 3.784 10.252 12.780 4.835 5.230 2.168 10.614 9.806 7.058 6.533 7.117 6.300 6.693 2.595 10.665 3.280 5.338 79 NA NA 1.406 5.442 2.956 4.317 7.300 1.695 1.525 6.673 4.510 4.616 0.426 0.775 3.460 1.296 0.589 5.257 4.561 4.785 1.571 82 NA NA NA 5.656 4.101 4.213 7.152 2.840 2.554 6.410 4.601 3.767 1.447 1.796 2.694 1.400 1.610 5.947 4.652 5.452 2.495 83 NA NA NA NA 8.447 1.736 2.170 7.347 6.782 11.050 1.958 1.888 5.005 5.192 6.826 5.599 5.039 10.175 2.426 9.226 6.723 116 NA NA NA NA NA 7.156 9.684 1.739 2.134 4.741 7.860 6.710 3.359 3.779 4.626 3.204 3.939 3.327 7.911 3.702 2.242 119 NA NA NA NA NA NA 2.970 6.158 5.593 9.861 2.397 0.699 4.209 4.396 5.637 4.410 4.243 8.986 2.403 8.037 5.534 120 NA NA NA NA NA NA NA 8.418 7.853 12.101 3.409 2.959 6.477 6.664 6.962 6.670 6.511 11.315 3.899 10.274 7.794 127 NA NA NA NA NA NA NA NA 1.411 5.137 6.358 5.734 2.201 2.277 3.903 2.176 2.437 3.721 6.409 4.095 1.519 128 NA NA NA NA NA NA NA NA NA 5.131 5.629 4.973 1.545 1.884 3.187 1.415 1.708 3.715 5.680 4.089 0.803 137 NA NA NA NA NA NA NA NA NA NA 12.152 8.855 7.651 8.071 5.996 5.377 8.231 1.744 12.203 1.821 4.729 143 NA NA NA NA NA NA NA NA NA NA NA 1.956 3.707 3.894 5.632 4.405 3.741 8.981 0.489 8.032 5.529 144 NA NA NA NA NA NA NA NA NA NA NA NA 3.902 4.089 4.937 3.710 3.936 8.286 2.096 7.337 4.834 146 NA NA NA NA NA NA NA NA NA NA NA NA NA 0.348 3.695 1.695 0.508 5.307 4.480 5.681 1.922 147 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.104 2.092 0.803 5.932 4.378 6.306 2.371 150 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1.818 3.474 4.786 5.697 3.745 1.793 151 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1.792 4.554 5.008 3.682 1.102 152 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 6.111 3.971 5.178 1.964 153 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 8.798 0.684 3.513 157 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 8.467 5.964 160 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3.153 161 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 164 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 167 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 168 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 173 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 174 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 195 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 212 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 216 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 217 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 218 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 223 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 224 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 225 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 228 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 229 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 232 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 233 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 236 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 237 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 238 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 241 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 242 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 243 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 244 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 245 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 247 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 248 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 249 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 164 167 168 173 174 195 212 216 217 218 223 224 225 228 229 232 233 236 237 238 72 2.978 3.446 4.112 1.401 5.321 7.529 3.404 10.426 10.561 10.305 4.915 7.890 3.839 2.611 5.804 9.826 10.006 5.368 5.180 4.715 79 6.082 4.951 3.242 5.981 4.483 1.425 3.270 4.322 4.457 4.201 3.054 1.786 3.031 5.689 1.885 3.722 3.902 2.609 3.018 2.657 82 6.472 6.024 3.932 6.671 4.572 1.289 4.415 4.413 4.003 4.326 3.744 0.734 4.176 5.950 2.055 3.813 3.993 2.972 3.039 3.802 83 9.689 9.241 8.160 10.899 8.090 5.151 8.634 2.960 3.386 1.208 7.972 5.160 8.395 9.924 6.283 2.360 1.589 6.746 6.813 8.021 116 4.921 3.868 1.314 3.660 3.600 4.775 0.791 7.672 6.946 7.551 1.819 5.136 0.743 4.554 2.708 7.072 7.252 3.086 2.745 1.619 119 8.500 8.052 6.971 9.710 6.901 4.355 7.793 2.164 2.197 1.815 6.783 4.364 7.554 8.735 5.094 1.564 1.744 5.557 5.624 7.180 120 10.740 10.292 9.231 11.970 8.840 6.623 10.053 4.432 4.457 2.676 9.043 6.632 9.814 11.439 7.354 3.832 3.057 7.668 7.735 9.440 127 5.317 4.261 1.706 4.445 3.993 3.273 1.604 6.170 6.305 6.049 1.518 3.634 1.365 4.950 1.985 5.570 5.750 2.363 2.444 0.991 128 5.311 4.255 1.700 4.439 3.987 2.544 2.522 5.441 5.209 5.320 1.512 2.905 2.283 4.944 1.269 4.841 5.021 1.993 2.349 1.909 137 1.448 1.987 5.308 1.514 4.296 9.067 5.083 11.964 9.091 9.414 4.639 9.428 5.035 1.081 4.693 11.364 11.544 4.530 4.425 5.911 143 8.495 8.047 6.966 9.705 6.896 3.853 7.336 1.248 1.312 0.903 6.778 3.862 7.097 8.730 5.089 1.032 1.212 5.552 5.619 6.723 144 7.800 7.352 6.271 9.010 6.201 4.048 7.093 1.857 1.497 1.565 6.083 4.057 6.854 8.035 4.394 1.257 1.437 4.857 4.924 6.480 146 6.903 5.847 3.292 6.031 4.882 1.344 3.790 4.241 4.376 4.120 3.104 1.705 3.551 6.536 2.284 3.641 3.821 3.008 3.417 3.177 147 7.528 6.472 3.917 6.656 6.204 0.954 3.815 4.139 4.274 4.018 3.729 1.315 3.576 7.161 2.685 3.539 3.719 3.409 4.655 3.202 150 4.211 3.763 3.355 5.803 2.311 3.889 4.076 5.458 4.774 5.097 3.167 3.334 3.834 4.910 1.374 4.858 5.038 1.565 1.633 3.929 151 4.888 3.848 2.539 5.278 3.289 2.052 3.361 4.769 4.085 4.408 2.351 2.235 3.122 4.586 0.691 4.169 4.349 1.415 1.824 2.748 152 6.475 5.344 4.096 6.835 4.876 0.835 3.994 3.732 3.867 3.611 3.908 1.196 3.755 7.340 2.278 3.132 3.312 3.002 3.411 3.381 153 1.595 0.850 3.017 1.653 3.159 5.653 4.056 8.559 7.875 8.198 3.295 6.049 4.008 1.228 3.477 7.959 8.139 3.314 3.288 4.884 157 8.930 8.482 7.401 10.140 7.331 4.288 7.771 1.336 1.654 0.980 7.213 4.297 7.532 9.165 5.524 1.467 0.972 5.987 6.054 7.158 160 1.721 0.477 2.468 2.056 2.274 5.293 3.714 8.199 7.515 7.838 2.935 5.689 3.666 1.354 3.117 7.599 7.779 2.954 2.604 4.542 161 4.716 3.379 1.520 4.259 3.117 2.744 2.187 5.688 5.004 5.327 1.332 3.154 2.094 4.117 0.766 5.088 5.268 1.183 1.545 1.918 164 NA 1.280 3.582 1.578 3.447 6.407 4.828 9.313 8.629 8.952 4.049 8.390 4.780 0.698 4.231 8.713 8.893 4.068 3.718 5.656 167 NA NA 2.764 2.039 2.570 5.589 4.004 8.495 7.811 8.134 3.231 5.985 3.956 1.337 3.413 7.895 8.075 3.250 2.900 4.832 168 NA NA NA 3.357 2.286 4.184 2.174 7.090 6.406 6.729 1.587 4.580 2.126 3.280 2.008 6.490 6.670 1.845 1.657 2.517 173 NA NA NA NA 3.984 7.547 3.563 10.444 8.592 8.915 3.773 7.908 3.515 1.339 4.194 9.844 10.024 4.031 3.843 4.391 174 NA NA NA NA NA 4.963 3.386 6.871 6.187 6.510 2.605 6.042 3.338 2.747 2.345 6.271 6.451 1.626 1.394 3.730 195 NA NA NA NA NA NA 4.797 4.515 4.650 4.394 4.711 0.901 4.558 8.143 3.061 3.915 4.095 3.785 4.267 4.184 212 NA NA NA NA NA NA NA 7.599 6.873 7.478 1.746 5.063 0.670 4.481 2.635 6.999 7.179 3.013 2.672 1.546 216 NA NA NA NA NA NA NA NA 0.318 2.122 6.556 4.473 7.327 8.508 4.867 1.643 1.823 5.330 5.397 6.953 217 NA NA NA NA NA NA NA NA NA 1.933 6.367 4.284 7.138 8.319 4.678 1.454 1.634 5.141 5.208 6.764 218 NA NA NA NA NA NA NA NA NA NA 6.669 4.055 7.290 8.621 4.980 1.255 0.840 5.443 5.510 6.916 223 NA NA NA NA NA NA NA NA NA NA NA 4.562 0.866 4.136 1.945 6.498 6.678 1.852 1.630 1.127 224 NA NA NA NA NA NA NA NA NA NA NA NA 4.318 7.903 2.802 3.675 3.855 3.719 3.786 3.944 225 NA NA NA NA NA NA NA NA NA NA NA NA NA 4.720 2.493 6.567 6.747 2.871 2.530 1.114 228 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.322 9.316 9.496 3.862 3.630 5.747 229 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.779 4.959 1.002 1.411 2.308 232 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.652 4.992 5.059 6.163 233 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 5.581 5.648 6.752 236 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.674 2.971 237 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2.596 238 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 241 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 242 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 243 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 244 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 245 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 247 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 248 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 249 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 241 242 243 244 245 247 248 249 72 10.949 11.610 10.418 10.941 11.611 10.754 4.191 6.089 6.269 79 4.845 5.506 5.228 4.837 5.748 4.650 2.449 0.934 0.784 82 4.697 5.358 4.379 4.995 5.572 4.502 3.594 2.079 1.929 83 1.337 1.042 2.022 0.625 2.209 1.496 7.940 5.990 5.840 116 7.640 8.301 7.322 7.938 8.515 7.445 1.095 3.342 3.522 119 1.043 1.176 0.648 1.341 1.373 0.538 6.751 5.194 5.044 120 2.400 1.684 2.406 1.832 1.414 2.205 9.011 7.462 7.312 127 6.693 7.354 6.346 6.685 7.596 6.498 0.898 1.816 1.996 128 5.903 6.564 5.585 6.201 6.778 5.708 1.480 1.696 1.617 137 9.785 10.446 9.467 10.083 11.657 9.590 5.387 7.634 7.814 143 2.173 2.409 2.568 1.926 3.076 1.978 6.630 4.692 4.542 144 0.929 1.590 0.611 1.227 1.804 0.734 6.051 4.887 4.737 146 4.764 5.425 5.147 4.756 5.667 4.569 3.084 0.984 0.834 147 4.662 5.323 5.045 4.654 5.565 4.467 3.109 1.756 1.606 150 5.468 6.129 5.150 5.766 5.796 5.273 3.391 3.846 3.767 151 4.779 5.440 4.461 5.077 5.654 4.584 2.319 2.153 2.003 152 4.255 4.916 4.638 4.247 5.158 4.060 3.288 1.349 1.199 153 8.569 9.230 8.251 8.867 10.199 8.374 4.360 6.607 6.787 157 2.317 2.336 3.003 1.853 3.220 2.122 7.065 5.127 4.977 160 8.209 8.870 7.891 8.507 9.084 8.014 4.018 5.535 5.219 161 5.698 6.359 5.380 5.996 6.573 5.503 1.380 2.140 2.061 164 9.323 9.984 9.005 9.621 10.487 9.128 5.132 7.379 7.559 167 8.505 9.166 8.187 8.803 9.809 8.310 4.308 6.555 6.735 168 7.100 7.761 6.782 7.398 7.975 6.905 1.979 4.187 4.367 173 9.286 9.947 8.968 9.584 10.161 9.091 3.867 6.114 6.294 174 6.881 7.542 6.563 7.179 7.756 6.686 3.192 5.205 4.889 195 5.038 5.699 5.421 5.030 5.941 4.843 4.091 2.132 1.982 212 7.567 8.228 7.249 7.865 8.442 7.372 1.022 3.269 3.449 216 2.656 3.317 2.338 2.954 3.531 2.461 6.524 5.303 5.153 217 2.467 3.128 2.149 2.765 3.342 2.272 6.335 5.114 4.964 218 1.348 2.009 1.975 1.340 2.251 1.153 6.823 4.885 4.735 223 6.877 7.538 6.559 7.175 7.752 6.682 0.589 2.768 2.948 224 4.798 5.459 5.181 4.790 5.701 4.603 3.851 1.892 1.742 225 7.690 8.351 7.107 7.682 8.300 7.495 0.880 2.837 3.017 228 9.926 10.587 9.608 10.224 10.254 9.731 5.223 7.470 7.650 229 5.389 6.050 5.071 5.687 6.264 5.194 1.770 2.563 2.484 232 1.613 2.274 2.008 1.605 2.516 1.418 6.070 4.132 3.982 233 1.968 2.137 2.597 1.654 2.871 1.773 6.659 4.721 4.571 236 5.862 6.523 5.544 6.160 6.538 5.667 2.433 4.176 3.769 237 5.917 6.578 5.599 6.215 6.792 5.722 2.058 3.801 3.394 238 6.997 7.658 6.741 6.989 7.900 6.802 0.454 2.144 2.324 239 NA 1.363 1.555 0.656 1.831 0.733 6.969 5.031 4.881 241 NA NA 1.727 0.550 1.914 0.875 7.319 5.778 5.628 242 NA NA NA 1.812 1.192 0.920 6.663 5.472 5.322 243 NA NA NA NA 2.059 0.888 7.332 5.492 5.342 244 NA NA NA NA NA 1.612 8.418 6.869 6.719 245 NA NA NA NA NA NA 6.786 5.245 5.095 247 NA NA NA NA NA NA NA 2.341 2.521 248 NA NA NA NA NA NA NA NA 0.669 249 NA NA NA NA NA NA NA NA NA
test = melt(dist_mat) No id variables; using all as measure variables head(test) variable value 1 72 NA 2 72 NA 3 72 NA 4 72 NA 5 72 NA 6 72 NA
How can I obtain all possible pairs and values associated with them ?
dput(mat) structure(list(`72` = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_), `79` = c(6.43, NA, NA, NA, NA, NA, NA, NA, NA, NA), `82` = c(7.458, 1.406, NA, NA, NA, NA, NA, NA, NA, NA), `83` = c(11.546, 5.442, 5.656, NA, NA, NA, NA, NA, NA, NA), `116` = c(3.784, 2.956, 4.101, 8.447, NA, NA, NA, NA, NA, NA), `119` = c(10.252, 4.317, 4.213, 1.736, 7.156, NA, NA, NA, NA, NA), `120` = c(12.78, 7.3, 7.152, 2.17, 9.684, 2.97, NA, NA, NA, NA), `127` = c(4.835, 1.695, 2.84, 7.347, 1.739, 6.158, 8.418, NA, NA, NA), `128` = c(5.23, 1.525, 2.554, 6.782, 2.134, 5.593, 7.853, 1.411, NA, NA), `137` = c(2.168, 6.673, 6.41, 11.05, 4.741, 9.861, 12.101, 5.137, 5.131, NA)), .Names = c("72", "79", "82", "83", "116", "119", "120", "127", "128", "137"), row.names = c("72", "79", "82", "83", "116", "119", "120", "127", "128", "137"), class = "data.frame")
回答1:
The problem is that you not specifying an id-variable. You can create one by transforming the row names into a variable and then melt
:
mat$rn <- row.names(mat)
m1 <- melt(mat, id.vars = "rn")
which gives:
> head(m1, 15)
rn variable value
1 72 72 NA
2 79 72 NA
3 82 72 NA
4 83 72 NA
5 116 72 NA
6 119 72 NA
7 120 72 NA
8 127 72 NA
9 128 72 NA
10 137 72 NA
11 72 79 6.43
12 79 79 NA
13 82 79 NA
14 83 79 NA
15 116 79 NA
However, you did not supply a matrix, but a dataframe in your dput
. When you apply the melt
function to a matrix without specifying an id variable, it works as expected:
m <- as.matrix(mat)
m2 <- melt(m)
which gives:
> head(m2,15)
Var1 Var2 value
1 72 72 NA
2 79 72 NA
3 82 72 NA
4 83 72 NA
5 116 72 NA
6 119 72 NA
7 120 72 NA
8 127 72 NA
9 128 72 NA
10 137 72 NA
11 72 79 6.43
12 79 79 NA
13 82 79 NA
14 83 79 NA
15 116 79 NA
来源:https://stackoverflow.com/questions/35131890/reshape2-melt-not-producing-all-pairs