2

X/Y 位置のリスト (>2000 行) を含むデータ フレームがあります。私が望むのは、最大距離に基づいてすべての行/場所を選択または検索することです。たとえば、データ フレームから、互いに 1 ~ 100 km 離れているすべての場所を選択します。これを行う方法に関する提案はありますか?

4

2 に答える 2

1

私はあなたの質問から完全に明確ではありませんが、座標の各行を取り、座標が特定の距離内にある他のすべての行を見つけたいと思っていると仮定します:

# Create data set for example

set.seed(42)
x <- sample(-100:100, 10)
set.seed(456)
y <- sample(-100:100, 10)

coords <- data.frame(
  "x" = x,
  "y" = y)

# Loop through all rows

lapply(1:nrow(coords), function(i) {
  dis <- sqrt(
    (coords[i,"x"] - coords[, "x"])^2 + # insert your preferred 
    (coords[i,"y"] - coords[, "y"])^2   # distance calculation here
  ) 
  names(dis) <- 1:nrow(coords)          # replace this part with an index or 
                                        # row names if you have them
  dis[dis > 0 & dis <= 100]             # change numbers to preferred threshold
})

[[1]]
2        6        7        9       10 
25.31798 95.01579 40.01250 30.87070 73.75636 

[[2]]
1         6         7         9        10 
25.317978 89.022469 51.107729  9.486833 60.539243 

[[3]]
5        6        8 
70.71068 91.78780 94.86833 

[[4]]
5       10 
40.16217 99.32774 

[[5]]
3        4        6       10 
70.71068 40.16217 93.40771 82.49242 

[[6]]
1        2        3        5        7        8        9       10 
95.01579 89.02247 91.78780 93.40771 64.53681 75.66373 97.08244 34.92850 

[[7]]
1        2        6        9       10 
40.01250 51.10773 64.53681 60.41523 57.55867 

[[8]]
3        6 
94.86833 75.66373 

[[9]]
1         2         6         7        10 
30.870698  9.486833 97.082439 60.415230 67.119297 

[[10]]
1        2        4        5        6        7        9 
73.75636 60.53924 99.32774 82.49242 34.92850 57.55867 67.11930 
于 2013-05-12T00:09:05.263 に答える