我有一个包含 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))
)
Run Code Online (Sandbox Code Playgroud)
我计划获取一个矩阵,其中query
和target
列中列出的值是新列,ANI 值是数据框中每个单元格的值,如下所示:
识别号1 | 识别号2 | ID3 | ID4 | |
---|---|---|---|---|
识别号1 | 55 | 93 | 79 | 57 |
识别号2 | 43 | 82 | 83 | 49 |
ID3 | 60 | 78 | 73 | 98 |
ID4 | 97 | 100 | 76 | 94 |
PD:这些是合成值,在我的原始数据中,我希望每个单元格的对角线为 100(相同对相同)。
你可以简单地运行xtabs
> xtabs(dist ~ ., demo_data)
target
query ID1 ID2 ID3 ID4
ID1 57 96 73 81
ID2 87 43 67 74
ID3 65 72 97 46
ID4 93 94 67 94
Run Code Online (Sandbox Code Playgroud)