【问题标题】:How to re-order columns in a frequency table (OTU/ASV table)? Samples are out of order [duplicate]如何重新排序频率表(OTU/ASV 表)中的列?样品有问题[重复]
【发布时间】:2021-07-24 06:07:54
【问题描述】:

我的实验室希望分析 30 个包含 NGS 数据的环境样本。当我对 tar.bz2 文件进行 tar 处理时,发布的 fastq 文件在新目录中出现故障。我没有想到任何事情,并认为随着我的工作流程的进展,订单将被简单地纠正。这没有发生。现在在频率表中,我的样本列乱序了。这是我的意思的一个例子:

sample-B1 sample-B4 sample-B3 sample-B2 species
2 0 4 8 dog
14 3 10 9 cat

我想将示例列更改为 B1-B4 的顺序,如下所示:

sample-B1 sample-B2 sample-B3 sample-B4 species
2 8 4 0 dog
14 9 10 3 cat

这是一个简化。在我的实际数据中,我有 30 个“样本”列。有没有简单的方法可以做到这一点?

提前感谢您的宝贵时间:)

【问题讨论】:

    标签: r bioinformatics


    【解决方案1】:

    我们可以在列上使用str_sort

    library(dplyr)
    library(stringr)
    df1 <- df1 %>%
       select(str_sort(names(.), numeric = TRUE))
    

    -输出

    df1
    #  sample-B1 sample-B2 sample-B3 sample-B4 species
    #1         2         8         4         0     dog
    #2        14         9        10         3     cat
    

    或者另一个选项是mixedsort from gtools

    df1 <- df1[gtools::mixedsort(names(df1))]
    

    数据

    df1 <- structure(list(`sample-B1` = c(2L, 14L), `sample-B4` = c(0L, 
    3L), `sample-B3` = c(4L, 10L), `sample-B2` = 8:9, species = c("dog", 
    "cat")), class = "data.frame", row.names = c(NA, -2L))
    

    【讨论】:

    • 感谢您的回复阿克伦!我尝试了 df1
    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多