我有张桌子看起来像
stamp a b expected result (euclidean distance)
1 2 1 (3-2)**2+(1-1)**2
2 3 1 (1-3)**2+(4-1)**2
3 1 4 last one can be default defined
如何根据从stamp 1到末尾跨行的滚动函数的计算得到预期的结果。或者你还有别的方法吗?
我希望将它与聚合函数一起使用,因此,解决方案应该是一个单独的函数。
非常感谢。
发布于 2014-07-22 19:09:20
像这样的数据
dd<-read.table(text="stamp a b
1 2 1
2 3 1
3 1 4", header=T)
你可以做这样的事
dd$dist<-c(with(dd, sqrt(diff(a)^2 + diff(b)^2)), NA)
获得成对的距离
stamp a b dist
1 1 2 1 1.000000
2 2 3 1 3.605551
3 3 1 4 NA
发布于 2014-07-22 20:20:37
另一种方法:
dat$dist <- c(diag(as.matrix(dist(dat[2:3]))[-1, -nrow(dat)]), NA)
# stamp a b dist
# 1 1 2 1 1.000000
# 2 2 3 1 3.605551
# 3 3 1 4 NA
其中dat
是数据框架的名称。
https://stackoverflow.com/questions/24895511
复制相似问题