我有一个包含 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(相同对相同)。
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