pivot_wider 从三列获取距离矩阵

问题描述 投票:0回答:1

我有一个包含 3 列的数据框,如下所示:

set.seed(123)

demo_data <- data.frame(
  
  query = rep(sprintf("ID%s", c(1:4)),4),
  target = rep(sprintf("ID%s", c(1:4)), each = 4),
  dist = round(runif(min = 40, max = 100, n = 16))
  
)

我计划获取一个矩阵,其中

query
target
列中列出的值是新列,ANI 值是数据框中每个单元格的值,如下所示:

ID1 ID2 ID3 ID4
ID1 55 93 79 57
ID2 43 82 83 49
ID3 60 78 73 98
ID4 97 100 76 94

PD:这些是合成值,在我的原始数据中,我希望每个单元格的对角线为 100(相同对相同)。

r dataframe pivot
1个回答
0
投票
set.seed(123)

demo_data <- data.frame(
  
  query = rep(sprintf("ID%s", c(1:4)),4),
  target = rep(sprintf("ID%s", c(1:4)), each = 4),
  dist = round(runif(min = 40, max = 100, n = 16))
  
)
# Install and load the tidyr package if not already installed
# install.packages("tidyr")
library(tidyr)


# Spread the data into wide format
wide_matrix <- spread(demo_data, target, dist)

# Print the resulting matrix
print(wide_matrix)
print(wide_matrix)
  query ID1 ID2 ID3 ID4
1   ID1  57  96  73  81
2   ID2  87  43  67  74
3   ID3  65  72  97  46
4   ID4  93  94  67  94
© www.soinside.com 2019 - 2024. All rights reserved.