다른 열의 값 비교

다른 열의 값 비교

다음과 같은 열이 있습니다 csv. (다른 열도 있지만 관련성이 있습니다.)

region, city, actual rating, predicted rating
NSW, SYD, 0.765, 0.5
Victoria, Melbourne, 4.81225, 5.0

제가 하고 싶은 것은 실제 평점이 가장 가깝지 않은 지역과 도시를 출력하는 것입니다 . 즉, 최대한 가깝게 0.5출력하겠습니다 . 반올림을 계산하여 이를 변형해 보았습니다.NSW, SYD0.7651.00.5awk

awk -F, '{$3=$3*2; printf "%0.0f\n",$3}'

그런데 특정 필드를 편집하면서 다른 필드를 유지하는 방법을 잘 모르겠어서 이 단계에서 멈췄습니다.

답변1

표시된 데이터를 토대로 추정하면 예상 평점은 0.5의 배수입니다. 따라서 '실제 평점이 0.5에 가깝지 않음' 조건은 '실제 평점이 0.5/2 이상 다름'과 동일합니다. 그러니 테스트해 보세요. 표준 awk에는 절대값 함수가 없으므로 두 테스트를 결합해야 합니다.

처음 두 필드를 인쇄하려면 $1및 를 인쇄하세요 $2. OFS쉼표로 구분하려면 쉼표로 설정하거나 를 사용할 수 있습니다 print $1 "," $2.

awk -F, -v OFS=, '$4 - $3 < -0.25 || $4 - $3 > 0.25 {print $1, $2}'

관련 정보