이런 파일이 있는데,
REF QUERY COVR COVQ
sca_10_chr8_2_0 scaffold_2 0.08 2.48
sca_10_chr8_2_0 scaffold_1 0.02 0.02
sca_10_chr8_2_0 scaffold_2 0.22 0.06
sca_10_chr8_2_0 scaffold_2 0.21 0.05
sca_10_chr8_2_0 scaffold_1 0.21 0.27
sca_10_chr8_2_0 scaffold_2 0.21 0.64
sca_10_chr8_2_0 scaffold_4 0.20 0.06
sca_10_chr8_2_0 scaffold_8 0.20 0.07
sca_10_chr8_2_0 scaffold_10 0.21 0.08
열 1과 2의 각각 다른 조합에 대해 또는 열 1과 2의 중복을 기반으로 열 4(총 적용 범위)를 합산하여 다음과 같은 출력 파일을 얻고 싶습니다.
REF QUERY COVQ
sca_10_chr8_2_0 scaffold_2 1.52
sca_10_chr8_2_0 scaffold_1 0.29
sca_10_chr8_2_0 scaffold_4 0.06
sca_10_chr8_2_0 scaffold_8 0.07
sca_10_chr8_2_0 scaffold_10 0.08
답변1
$ cat tst.awk
NR==1 { print $1, $2, $4; next }
{ sum[$1 OFS $2] += $4 }
END {
for (key in sum) {
print key, sum[key]
}
}
$ awk -f tst.awk file
REF QUERY COVQ
sca_10_chr8_2_0 scaffold_8 0.07
sca_10_chr8_2_0 scaffold_10 0.08
sca_10_chr8_2_0 scaffold_1 0.29
sca_10_chr8_2_0 scaffold_2 3.23
sca_10_chr8_2_0 scaffold_4 0.06
위의 내용은 $1과 $2의 각 쌍에 대한 네 번째 열 값의 합계이기 때문에 귀하의 질문에서 예상되는 출력이 잘못되었다고 가정합니다.
답변2
사용밀러:
$ mlr --pprint --ofmt '%.2f' stats1 -a sum -g REF,QUERY -f COVQ yourfile
REF QUERY COVQ_sum
sca_10_chr8_2_0 scaffold_2 3.23
sca_10_chr8_2_0 scaffold_1 0.29
sca_10_chr8_2_0 scaffold_4 0.06
sca_10_chr8_2_0 scaffold_8 0.07
sca_10_chr8_2_0 scaffold_10 0.08