Вам нужна функция dist()
:
df <- read.table(header = TRUE, text = "
x y z x1 y1 z1
time1 2 1 2 4 6 8
time2 3 4 3 6 6 7
time3 6 8 9 4 3 3")
df$distance <- apply(df, 1, function(x) dist(matrix(x, nrow = 2, byrow = TRUE)))
df
#> x y z x1 y1 z1 distance
#> time1 2 1 2 4 6 8 8.062258
#> time2 3 4 3 6 6 7 5.385165
#> time3 6 8 9 4 3 3 8.062258
Создано в 2018-10-24 с помощью пакета Представить (v0.2.1)
С help("dist")
:
Описание
Эта функция вычисляет и возвращает матрицу расстояний, вычисленную с использованием указанной меры расстояния для вычисления расстояний между строкамиматрицы данных.
Использование
dist (x, method = "евклидов", diag = FALSE, верхний = FALSE, p = 2)
Так, если вы дадите ей матрицу m
, такую как
2 1 2
4 6 8
distance(m)
, будет вычислено евклидово расстояние между c(2, 1, 2)
и c(4, 6, 8)
.Затем мы можем просто применить к каждой строке вашего набора данных функцию dist()
, вызываемую из матрицы, построенной из этой строки, где первая строка новой матрицы - это наблюдения x
, y
и z
для этогострока вашего набора данных, а вторая строка новой матрицы - это наблюдения x1
, y1
и z1
для этой строки вашего набора данных.