我有一个数据帧,它有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))
  
)

我计划获得一个矩阵,其中在querytarget列中列出的值是新列,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(相同的情况下相同).

推荐答案

以下是我们如何使用pivot_widercolumn_to_rownames:

library(dplyr)
library(tidyr)
library(tibble)

demo_data %>%
  pivot_wider(
    names_from = target, 
    values_from = dist,
    id_cols = query
  ) %>%
  column_to_rownames(var = "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

R相关问答推荐

卸载安装了BRM的模型发出的警告

从嵌套列表中智能提取线性模型系数

使用R中的Shapetime裁剪格栅文件

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

标识R中多个列中缺少的唯一值

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

如何根据数据帧中的值从该数据帧中提取值?

如何在R中平滑地绘制线图(不拟合)?

将标识符赋给事件序列,避免错误观察

R如何将列名转换为更好的年和月格式

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

按组内中位数分类

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

Conditional documentr::R中数据帧的summarize()

注释不会绘制在所有ggplot2面上

使用R、拼图和可能的网格包绘制两个地块的公共垂直线

通过比较来自多个数据框的值和R中的条件来添加新列

如何在R中的两列以上使用联合(&U)?

使用卡环从R中的列中删除单位(&C)

如何从矩阵绘制环弦图