美文网首页
两种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