2
私は異なる時点で異なるIDのxy座標を持つ2つのデータフレームを持っています。私がしたいのは、前年のどの点が今年の点に最も近いかを特定し、そのデータをリストに格納することです。したがって、この例のデータのために:私は(下記のように)適用使ってこれを実行しようとしているが、でてきた異なるポイントのリストに最も近いポイントを特定し、そのIDをリストに格納するにはどうすればいいですか
names closest
D A
E B
F C
:
oldnames <- c('A', 'B', 'C')
oldx <- c(0,5,10)
oldy <- c(0,5,10)
olddf <- data.frame(oldnames, oldx, oldy)
newnames <- c('D','E','F')
newx <- c(1, 6, 11)
newy <- c(1, 6, 11)
newdf <- data.frame(newnames, newx, newy)
私はこのようになりますリストを作成したいと思います瞬時にエラーメッセージが表示されます: (mutate_impl(.data、dots)のエラー: バイナリ演算子に数値以外の引数)
誰にもアイデアはありますか?
closestdf <- data.frame()
apply(newdf, 1, function(row) {
name <- row["names"]
xID <- row["x"]
yID <- row["y"]
closest <- olddf %>%
mutate(length = sqrt((xID - oldx)^2 + (yID - oldy)^2)) %>%
mutate(rank = min_rank(length)) %>%
filter(rank == '1')%>%
mutate(total = '1')
closestdf <- rbind(closest, closestdf)
})
乾杯!
大感謝を!トップソリューションの場合は、代わりに[which.min((。x - olddf $ oldx^2)+(.y - olddf $ oldy)^ 2)]とする必要がありますか? –
はい、申し訳ありませんが、私は速すぎました。 – Axeman