我的数据如下所示:
head retinopathy.pheno.glm.logistic.hybrid1
CHROM POS ID REF ALT A1 A1_FREQ FIRTH? TEST OBS_CT BETA SE Z_STAT P ERRCODE
1 785989 1:785989:T:C C T T 0.154229 N ADD 1608 0.166419 0.0975993 1.70512 0.0881712 .
1 1130727 1:1130727:A:C A C C 0.0870647 N ADD 1608 0.148613 0.127899 1.16196 0.245253 .
1 1156131 1:1156131:T:C T C C 0.161692 N ADD 1608 0.0648246 0.0991692 0.653676 0.51332 .
1 1158631 1:1158631:A:G G A A 0.109142 N ADD 1608 -0.142729 0.111427 -1.28092 0.200221 .
1 1211292 1:1211292:C:T C T T 0.0631219 N ADD 1608 -0.102611 0.147134 -0.6974 0.485552 .
1 1478153 1:1478153:T:C T C C 0.285448 N ADD 1608 0.0407141 0.0791718 0.514251 0.607077 .
...
我将如何创建一个名为“DIR”的附加列,其中包含:
+ if BETA>0
- if BETA<0
0 if BETA=0
答案1
你可以尝试磨坊主
$ mlr --pprint --ifs space --repifs put '
$DIR = $BETA>0 ? "+" : $BETA<0 ? "-" : "0"
' retinopathy.pheno.glm.logistic.hybrid1
CHROM POS ID REF ALT A1 A1_FREQ FIRTH? TEST OBS_CT BETA SE Z_STAT P ERRCODE DIR
1 785989 1:785989:T:C C T T 0.154229 N ADD 1608 0.166419 0.0975993 1.70512 0.0881712 . +
1 1130727 1:1130727:A:C A C C 0.0870647 N ADD 1608 0.148613 0.127899 1.16196 0.245253 . +
1 1156131 1:1156131:T:C T C C 0.161692 N ADD 1608 0.0648246 0.0991692 0.653676 0.51332 . +
1 1158631 1:1158631:A:G G A A 0.109142 N ADD 1608 -0.142729 0.111427 -1.28092 0.200221 . -
1 1211292 1:1211292:C:T C T T 0.0631219 N ADD 1608 -0.102611 0.147134 -0.6974 0.485552 . -
1 1478153 1:1478153:T:C T C C 0.285448 N ADD 1608 0.0407141 0.0791718 0.514251 0.607077 . +
您可能需要根据数据的实际分隔方式来调整--ifs
和。--repifs
答案2
怎么样:
awk 'NR==1 { $(NF+1)="DIR" }
NR>1 { if($11>0 ){$(NF+1)="+"}
if($11<0 ){$(NF+1)="-"}
if($11==0){$(NF+1)="0"}
} 1 ' file
答案3
您可以使用以下 Perl 代码来转换输入文件:
$ perl -pale '
$_ .= $" . ("DIR", qw[0 + -][$F[10]<=>0])[$.>1];
' file
输出数据:
CHROM POS ID REF ALT A1 A1_FREQ FIRTH? TEST OBS_CT BETA SE Z_STAT P ERRCODE DIR
1 785989 1:785989:T:C C T T 0.154229 N ADD 1608 0.166419 0.0975993 1.70512 0.0881712 . +
1 1130727 1:1130727:A:C A C C 0.0870647 N ADD 1608 0.148613 0.127899 1.16196 0.245253 . +
1 1156131 1:1156131:T:C T C C 0.161692 N ADD 1608 0.0648246 0.0991692 0.653676 0.51332 . +
1 1158631 1:1158631:A:G G A A 0.109142 N ADD 1608 -0.142729 0.111427 -1.28092 0.200221 . -
1 1211292 1:1211292:C:T C T T 0.0631219 N ADD 1608 -0.102611 0.147134 -0.6974 0.485552 . -
1 1478153 1:1478153:T:C T C C 0.285448 N ADD 1608 0.0407141 0.0791718 0.514251 0.607077 . +