個々のIDが移動したランバート座標から最大(絶対的で累積ではない)の距離を見つける必要があります。グループごとに可能なすべての座標ペア間の最大距離
Iは、次のデータセットを有する:
rownum <- c(1,2,3,4,5,6,7,8)
ID <- c(1,1,1,1,2,3,3,3)
years <- c(1994, 1994, 1995, 1995, 1994, 1998, 1999, 1999)
coorx <- c(160501,160507,160507,160508,160638,160402,160402,160707)
coory <- c(202549,202727,202727,202488,202701,202586,202586,202548)
test <- as.data.frame(cbind(rownum, ID, years, coorx, coory))
点はユークリッド距離で既に従って、ランバート72点の座標です。したがって、sqrt((x2-x1)^ 2 +(y2-y1)^ 2)を使用して行のペア間の距離を求める必要があることはわかっています。私が悩んでいるのは、この計算を同時に行っている最中に、個々の個体ごとにすべての行をペアごとに比較して最大距離を見つける必要があるということです。私。 1-2行目、1-3行目、1-4行目、2-3行目、2-4行目などを比較し、max distを抽出します。私はこの結果を新しい列に追加する必要があります(1人あたりすべての行に対して1つの最大値)。
座標(ID2)が1つのみの場合、0またはNAを追加できます。
すべての回答これはグループ間で分割されていないベクトル全体(たとえばOperate on pairs of rows of a data frame)の連続した行間でのみ検出されます。
これにcombn、outer、またはdist関数を適合させる方法はありますか?
この問題の拡張は、特定の年の最初の座標を取得し、それを他の年の最初の座標からの座標と比較することによって、年間の最大距離を見つけることです。しかし、最も重要なのは最初の質問です。