【问题标题】:Creating a .ped file: how to split values inside my cells creating new columns?创建 .ped 文件:如何在创建新列的单元格内拆分值?
【发布时间】:2021-05-20 18:23:00
【问题描述】:

我有一个关于为 PLINK 软件创建 .ped 文件的问题。

这是我的输入文件:一个 .csv 文件,有 50 行(带有 SampleNames)和大约 170000 列(带有我的 SNP 的字符和物理位置)。使用前将删除标头。

Samples     chr1.pos1  chr1.pos2   ...    chrY...pos100
ID1          -9         G/G                 C/C
ID2          G|T        -9                  GCCCAAATTT|GCCCAAATTTC
ID3          -9         A/A                 A|TGT
ID4

我需要将我的“G|T”、“A/A”拆分为不同的列,以便为相同的“chr1.pos1”获得 2 个不同的等位基因,例如:

         chr1.pos1      chr1.pos2   ...    chrY...pos100

Sample   All1     All2      All1     All2          All1         All2
ID1      -9        -9        G        G             C           C
ID2       G         T       -9       -9           GCCCAAATTT    GCCCAAATTTC 
ID3      -9        -9        A        A             A           TGT
ID4

我该如何解决这个问题(使用 R 或 Unix)? 我曾经尝试过不同的方式,但似乎没有任何效果...... 真的谢谢你的帮助!

弗朗西斯卡

【问题讨论】:

  • 你的意思是什么在使用前将删除标题,因为在较低的块中标题仍然存在?
  • 为什么提到PED文件?显示的数据没有 PED 文件的强制性前六列。
  • 您好 Armadi,感谢您的热情回复。我提到 PED 文件有两个原因。
  • 正如我所说,我提到了一个 PED 文件,因为我有另一个 .csv 文件,其中包含 .ped 及其标题的六个强制性列 (FID-IID-MATID-PAT-ID-SEX-STATUS ) 已为 50 个样本填充。我的问题中提到的 .csv 包含有关等位基因的信息(对于 167835 个 SNP),我认为这可能更容易: 1. 将 G/G 拆分为两个不同的列(G G,如您在输出中看到的)2 . 将此 .csv 与具有六个 PED 列的 .csv 合并; 3.删除我的标题以获得最终的PED文件。
  • 现在,我想拆分我的列,如下图所示:) 非常感谢您提供的任何帮助。

标签: r unix split genetics


【解决方案1】:

如果列确实是空格分隔的,则会拆分数据:

awk '{for (i=1; ++i<=NF; ) $i = (split($i, a, "[/|]")>1) ? a[1]" "a[2] : $i" "$i; print}' input_file >output_file

对于其他输入分隔符,您可以在awk 之后添加-F 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多