gpt4 book ai didi

r - dplyr R 中的欧氏距离

转载 作者:行者123 更新时间:2023-12-04 09:29:45 27 4
gpt4 key购买 nike

如何计算按某些处理分组的观察值之间的距离矩阵。

数据示例:

set.seed(1212)
df <- data.frame(yta = c(rep("A", 3), rep("B", 3)), x = rnorm(6, 10, 2), y = rnorm(6, 40, 12))

我想要得到的输出是这样的

          1         2         3         4         5         6
1 4.234690 25.858459 0 0 0
2 4.234690 23.503327 0 0 0
3 25.858459 23.503327 0 0 0
4 0 0 0 9.330203 9.277692
5 0 0 0 9.330203 18.371015
6 0 0 0 9.277692 18.371015

最佳答案

使用splitlapplybind_rows 我们可以得到这样的结果:

df %>% split(., (.)$yta) %>% lapply(function(df_part) df_part %>% select(-yta) %>% as.matrix %>% 
dist(upper = T) %>% as.matrix %>% as.data.frame) %>%
bind_rows %>% mutate(yta = df$yta)

# Source: local data frame [6 x 7]
#
# 1 2 3 4 5 6 yta
# 1 0.000000 28.43909 4.350409 NA NA NA A
# 2 28.439090 0.00000 32.038712 NA NA NA A
# 3 4.350409 32.03871 0.000000 NA NA NA A
# 4 NA NA NA 0.00000 20.267301 29.106135 B
# 5 NA NA NA 20.26730 0.000000 9.116934 B
# 6 NA NA NA 29.10614 9.116934 0.000000 B

关于r - dplyr R 中的欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32944903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com