R中的pivot_wider从三列获取距离矩阵

Val*_*tin 2 pivot r dataframe

我有一个包含 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)

我计划获取一个矩阵,其中querytarget列中列出的值是新列,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(相同对相同)。

Tho*_*ing 5

你可以简单地运行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)