我想将列中的简短重复单词转换为数字。
在下面的例子中,我想改变的话(with ONLY 2 LETTERS)在数字柱3,以使得AA被改变为2,AB或BA成1,BB成0。
所述第一和第二列也可以包含AA,BB,AB和BA。这些不应该改变。
列由" "()分隔。
Id_animal Id_SNP Allele
ID01 rs01 AB
ID02 rs01 BA
ID03 rs01 AA
ID04 rs01 BB
Run Code Online (Sandbox Code Playgroud)
想要的输出是:
Id_animal Id_SNP Allele
ID01 rs01 1
ID02 rs01 1
ID03 rs01 2
ID04 rs01 0
Run Code Online (Sandbox Code Playgroud) 常规文件包含按列组织的数据,以空格分隔。根据第二个字段的值,我想将该初始数据文件拆分为几个其他文件。
数据文件有 54,242 行和 399 列。数据结构是这样的:
SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs02 25 10 BA AA ...
rs03 1 30 AA BB ...
rs04 X 90 BB AA ...
Run Code Online (Sandbox Code Playgroud)
我的输出应包含与第2 列file"${chr}"中的不同$chr值一样多的每条记录(或行)。例如:
file1将包含其第二个字段为的所有记录1:
SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs03 1 30 AA BB ...
Run Code Online (Sandbox Code Playgroud)
file25将包含其第二个字段为的所有记录25:
SNP Chr Pos ID_01 ID_02 ...
rs02 25 10 BA AA ... …Run Code Online (Sandbox Code Playgroud) 例如,我的条目中有 10 列,我希望我的输出有 5 列。更具体地说,我想连接第 1 和第 2 列、第 3 和第 4 列、第 5 和第 6 列,依此类推。
我的输入如下:
ID01 1 2 0 1 2 0 1 0
ID02 1 0 1 0 1 0 1 0
ID03 2 1 0 2 1 0 2 1
ID04 5 0 5 0 5 2 1 2
Run Code Online (Sandbox Code Playgroud)
我希望我的输入如下:
ID01 12 01 20 10
ID02 10 10 10 10
ID03 21 02 10 21
ID04 50 50 52 12
Run Code Online (Sandbox Code Playgroud)
为此,我尝试过:
perl -alne 'print join …