美文网首页
两种awk方法实现转置(行变列,列变行)与R t(x)用时对比

两种awk方法实现转置(行变列,列变行)与R t(x)用时对比

作者: 吃吃吃_就知道吃 | 来源:发表于2022-03-18 23:37 被阅读0次

    示例文件:



    此文件sep= \t,其他分隔符需要自己更换;

    awk第一种方法

    命令如下:

    awk 'BEGIN{FS=OFS="\t"}{for(i=1;i<NF+1;i++){a[NR,i]=$i}}END{for(i=1;i<NF+1;i++){for(j=1;j<NR;j++){printf a[j,i]"\t"}print a[j,i]}}' testfile2
    

    转置结果:


    这种需求还是需要一些小操作的

    awk第二种方法

    根据列数用awk输出每一列时格式输出转为一行并保存到以列数为名的数组中,最后再输出所有数组,减少了一个维度会简单一些,代码如下:

    awk 'BEGIN{FS=OFS="\t"}NR==1{for(i=1;i<NF+1;i++){a[i]=$i}}NR>1{for(i=1;i<NF;i++){a[i]=a[i]"\t"$i}a[i]=a[i]"\t"$i}END{for(i=1;i<NF+1;i++){print a[i]}}'  testfile2
    

    使用R tx 函数

    用时统计

    结果是一样的,看一下用时(待转换的矩阵为55827行,13列的基因表达矩阵):
    结果文件:


    第一种:


    第二种:


    使用R tx函数用时:

    能看出来第一种是最优的,第二种减少一个维度,增加了运行时间,R函数第二

    相关文章

      网友评论

          本文标题:两种awk方法实现转置(行变列,列变行)与R t(x)用时对比

          本文链接:https://www.haomeiwen.com/subject/cytgdrtx.html