小编Val*_*tin的帖子

如何从现有两列创建新列但省略 R 中的 NA 行

我有一个数据框,其中一部分如下所示:

Domain <- c(rep("Bacteria",3),rep("Archaea", 2))
Phylum <- c("Proteobacteria","Cyanobacteria","Planctomycetota", "Thermoplasmatota", "Thermoplasmatota")
Class <- c("Alphaproteobacteria","Cyanobacteriia","Phycisphaerae","Poseidoniia_A",NA)
Order <- c("Sphingomonadales", NA, "Phycisphaerales", "Poseidoniales", NA)
Family <- c("Emcibacteraceae", NA, NA, "Poseidonia", NA)
Genus <- c("UBA4441", NA,NA,NA,NA)
Species <- c("UBA4441 sp", NA,NA,NA,NA)


demo_table <- data.frame(Domain, Phylum, Class, Order, Family, Genus, Species)
Run Code Online (Sandbox Code Playgroud)

这里的要点是我想创建一个名为“赋值”的新列,该列包含逐行包含非 NA 值的最后两列的合并,并且这些值由空格分隔。

这是预期的输出:

领域 班级 命令 家庭 物种 分配
细菌 变形菌门 α变形菌门 鞘氨醇单胞菌目 杆菌科 UBA4441 UBA4441 sp UBA4441 UBA4441 sp
细菌 蓝细菌 蓝细菌 不适用 不适用 不适用 不适用 蓝藻 蓝藻
细菌 浮霉菌门 球球族 …

r dataframe

6
推荐指数
1
解决办法
79
查看次数

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

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

pivot r dataframe

2
推荐指数
1
解决办法
87
查看次数

标签 统计

dataframe ×2

r ×2

pivot ×1