首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用函数/公式交叉行

应用函数/公式交叉行
EN

Stack Overflow用户
提问于 2014-07-22 18:57:03
回答 2查看 30关注 0票数 0

我有张桌子看起来像

代码语言:javascript
运行
复制
  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到末尾跨行的滚动函数的计算得到预期的结果。或者你还有别的方法吗?

我希望将它与聚合函数一起使用,因此,解决方案应该是一个单独的函数。

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-22 19:09:20

像这样的数据

代码语言:javascript
运行
复制
dd<-read.table(text="stamp  a  b
    1    2  1
    2    3  1
    3    1  4", header=T)

你可以做这样的事

代码语言:javascript
运行
复制
dd$dist<-c(with(dd, sqrt(diff(a)^2 + diff(b)^2)), NA)

获得成对的距离

代码语言:javascript
运行
复制
  stamp a b     dist
1     1 2 1 1.000000
2     2 3 1 3.605551
3     3 1 4       NA
票数 1
EN

Stack Overflow用户

发布于 2014-07-22 20:20:37

另一种方法:

代码语言:javascript
运行
复制
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是数据框架的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24895511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档