作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集包含这样的东西:
case,group,val1,val2,val3,val4
1,1,3,5,6,8
2,1,2,7,5,4
3,2,1,3,6,8
4,2,5,4,3,7
5,1,8,6,5,3
我正在尝试以编程方式计算组中值向量之间的欧几里德距离。
这意味着我在 n 个组中有 x 个案例。计算行对之间的欧几里德距离,然后对组进行平均。因此,在上面的示例中,首先我计算第 1 组(案例 1、2 和 5)的平均值和标准偏差,然后标准化值(即 [(原始值 - 平均值)/标准偏差],然后计算案例之间的 ED 1 和案例 2、案例 2 和 5、案例 1 和 5,最后平均该组的 ED。
谁能提出一种以合理有效的方式实现这一目标的简洁方法?
最佳答案
是的,在 R 中可能更容易...
您的数据:
dat <- data.frame(case = 1:5,
group = c(1, 1, 2, 2, 1),
val1 = c(3, 2, 1, 5, 8),
val2 = c(5, 7, 3, 4, 6),
val3 = c(6, 5, 6, 3, 5),
val4 = c(8, 4, 8, 7, 3))
一个简短的解决方案:
library(plyr)
ddply(dat[c("group", "val1", "val2", "val3", "val4")],
"group", function(x)c(mean.ED = mean(dist(scale(as.matrix(x))))))
# group mean.ED
# 1 1 3.121136
# 2 2 3.162278
关于r - 在 SPSS、R 或 Excel 中按其他变量分组的向量之间的欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380282/
我是一名优秀的程序员,十分优秀!