Как рассчитать евклидово расстояние между всеми строками фрейма данных и последней строкой в ​​r - PullRequest
0 голосов
/ 14 мая 2019

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

У вас есть идеи, как я могу это сделать.

вот пример фрейма данных:

df = data.frame(
      x = rnorm(10),
      y = rnorm(10),
      z = rnorm(10)
 )

Это желаемый вывод

        x          y           z     dist
1   2.4720136 -2.5332449 -0.29877255 1.956157
2   0.2616905 -0.5988683 -0.68586911 3.434874
3   0.4706199 -0.7911288 -0.07673025 2.700038
4   0.7202775 -2.0615370 -0.93959256 2.493054
5  -0.3002038  1.5872991  1.43678171 2.310108
6  -2.1274192  1.9746993  0.55372197 4.39925
7   0.2568586  0.2206467  0.22742260 3.482363
8   1.3476458 -0.2029571 -0.98492886 1.459337
9  -1.1968263 -0.4381387  0.93461394 2.180699
10 -0.2995206 -1.6586264 -0.25067014 NA

1 Ответ

1 голос
/ 14 мая 2019

Вы можете использовать dist, чтобы найти расстояния между каждой строкой кадра данных, например:

df = data.frame(
    x = rnorm(10),
    y = rnorm(10),
    z = rnorm(10)
)

# This will generate all the pairwise differences
#   Might be an issue of very large datasets
#   where speed will be an issue
df$dist = as.matrix(dist(df))[nrow(df), ]
...