Your program produces incorrect results for rows where :v1 is missing, use
julia> byrow(df, isless, [:v1, :v2, :v3], with = byrow(df, coalesce, :), lt = f)
Your program produces incorrect results for rows where :v1 is missing, use
julia> byrow(df, isless, [:v1, :v2, :v3], with = byrow(df, coalesce, :), lt = f)