!($1 in seen) { seen[$1] = 1; order[++n] = $1 } { value[$1, $2] = $3 } END { for (i = 1; i <= n; i++) { id = order[i] a = ((id, "before") in value ? value[id, "before"] : "NA") b = ((id, "after") in value ? value[id, "after"] : "NA") print id, a, b } }