4열의 값에서 최대값, 최소값, 평균값을 구하는 방법

4열의 값에서 최대값, 최소값, 평균값을 구하는 방법

나는 다음과 같은 데이터 구조를 가지고 있습니다.

X   43808504    G   1   ^]. <
X   43808505    C   3   .   4
X   43808506    T   8   .   ?
X   43808507    G   5   .   C

4번째 열에서 최대값(8), 최소값(1), 평균값(4.25)을 가져와서 파일에 쓰고 싶습니다.

데이터를 정렬한 후 삭제하려고 시도했지만 이는 비효율적인 것 같습니다.

당신의 도움에 감사드립니다

답변1

사용 awk:

awk 'NR == 1 { min = $4; max = $4 }
{
    sum += $4
    if ($4 > max) {
        max = $4
    }
    if ($4 < min) {
        min = $4
    }
} END {
    print max
    print min
    print sum / NR
}' input

먼저 min및 변수를 행 1 열 4의 값으로 설정하고 나중에 열 4의 각 값을 확인하여 현재 값보다 max작거나 큰지 확인 하고 그렇다면 다음 으로 설정합니다.minmaxmin저것값.

sum그런 다음 4열의 모든 값의 합계를 포함하는 변수를 만듭니다 . 나중에 이 변수는 합계를 총 행 수로 나누어 평균을 계산하는 데 사용됩니다.

마지막으로 최대값, 최소값, 평균값을 인쇄합니다.

답변2

그리고밀러

$ mlr --nidx --repifs stats1 -a 'min,max,mean' -f 4 data
1 8 4.250000

다음을 추가하여 일반적인 방법으로 출력을 파일로 리디렉션할 수 있습니다.> file

그리고GNU 데이터 혼합

$ datamash -W min 4 max 4 mean 4 < data
1   8   4.25

관련 정보