I have the following dataset:
id x y age 1 1745353 930284.1 30 2 1745317 930343.4 23 3 1745201 930433.9 10 4 1745351 930309.4 5 5 1745342 930335.2 2 6 1746619 929969.7 66 7 1746465 929827.1 7 8 1746731 928779.5 55 9 1746629 929902.6 26 10 1745938 928923.2 22 I want to find 5 closest neighbors for each of the id based on the distance calculated from the given (x,y). The final output should look like the following:
id n_id dist age age_n_id 1 2 2 30 23 1 5 1.5 30 2 1 3 5 30 10 1 7 3 30 7 1 8 3 30 55 2 1 6 23 30 2 10 1 23 22 2 6 2 23 66 2 7 6 23 7 2 8 9 23 55 3 2 1 10 23 3 1 2 10 30 3 4 1.2 10 5 3 6 1.6 10 66 3 9 2.3 10 26 ................................ ................................ 10 2 1.9 22 23 10 6 2.3 22 66 10 9 2.1 22 26 10 1 2.5 22 30 10 5 1.6 22 2 where n_id is the id if the neighbors, dist is the straight line distance between id and n_id, age is the age of the id, and age_n_id is the age of the n_id. Also, the maximum distance would be 10km. If there are fewer than 5 neighbors within 10km, say 3 neighbors, the corresponding id would be repeated only three times.
I am relatively newer in r programming and any help would be much appreciated.
distreal? I calculated the distance betweenID 1andID 2, it is69.37. In addition, what is the length unit of the coordinates?