在距离矩阵中查找每行的值并输出行/列

时间:2018-08-28 11:21:36

标签: r dataframe join merge subset

我有一个用dist <- as.matrix(daisy(data_clean, metric = "gower"))计算的距离矩阵,然后创建了一个子集,只比较相关的数据点。结果距离矩阵可以用以下形式描述:

dist <- matrix(c(0.14967638, 0.03088351, 0.26547164, 0.34354481, 0.29994279, 0.03447115, 0.0912523, 0.3662407), nrow = 2, ncol = 4)
colnames(dist) <- c("1","2","3","4")
rownames(dist) <- c("5","6")

> dist
           1         2          3         4
5 0.14967638 0.2654716 0.29994279 0.0912523
6 0.03088351 0.3435448 0.03447115 0.3662407

注意:行数和列数将随每次运行而变化。

现在,我想在该距离矩阵的每一行中找到与条件value > 0 & value < 0.1相匹配的值,并返回其行名和列名,以便可以将其与另一个矩阵/data.frame合并。

具有所需值的结果矩阵:

  row col
5   5   4
6   6   1

我不知道如何创建此矩阵...您对如何创建矩阵有任何想法吗?


最后,我想将其与如下所示的data.frame合并:

   id name ...
1   1  "A" ...
2   2  "B" ...
3   3  "A" ...
4   4  "A" ...
5   5  "B" ...
6   6  "A" ...

最终结果应如下所示:

   id name ... similar
1   1  "A" ...      NA
2   2  "B" ...      NA  
3   3  "A" ...      NA
4   4  "A" ...      NA
5   5  "B" ...       4
6   6  "A" ...       1

0 个答案:

没有答案