我有一個包含X
和Ỳ
座標的十個點的列表。我想計算任意兩點之間可能的距離排列。準確地說,只有1-2,2-1中的一個距離應該存在。我設法消除了一個點與自身的距離。但是無法達到這種排列距離。數據幀中任意點之間的唯一成對距離
# Data Generation
df <- data.frame(X = runif(10, 0, 1), Y = runif(10, 0, 1), ID = 1:10)
# Temporary key Creation
df <- df %>% mutate(key = 1)
# Calculating pairwise distances
df %>% full_join(df, by = "key") %>%
mutate(dist = sqrt((X.x - X.y)^2 + (Y.x - Y.y)^2)) %>%
select(ID.x, ID.y, dist) %>% filter(!dist == 0) %>% head(11)
# Output
# ID.x ID.y dist
# 1 1 2 0.90858911
# 2 1 3 0.71154587
# 3 1 4 0.05687495
# 4 1 5 1.03885510
# 5 1 6 0.93747717
# 6 1 7 0.62070415
# 7 1 8 0.88351690
# 8 1 9 0.89651911
# 9 1 10 0.05079906
# 10 2 1 0.90858911
# 11 2 3 0.27530175
如何實現如下所示的預期輸出?
# Expected Output
# ID.x ID.y dist
# 1 1 2 0.90858911
# 2 1 3 0.71154587
# 3 1 4 0.05687495
# 4 1 5 1.03885510
# 5 1 6 0.93747717
# 6 1 7 0.62070415
# 7 1 8 0.88351690
# 8 1 9 0.89651911
# 9 1 10 0.05079906
# 10 2 3 0.27530175
# 11 2 4 0.5415415
但是與dist()
相比,這種方法計算速度較慢。聽更快的方法會更開心。
您可能要添加過濾器(ID.x
一般不好使用標籤只是爲了「獲得關注」。如果你的問題是關於data.table或至少使用它,那麼我認爲它更合適。 – Frank
@Frank是的,我已經使用'data.table'方法來獲得一些建議(我認爲它們通常比數據框架方法更快)。 – Prradep