Per droopy's comments, you can try something like:
data[,-1] <- apply(data[,-1], 2, function (x) {rank(1/rank(x))})
data
# USER SUM.POSTS SUM.THREADS
# 1 u0 8.0 4.5
# 2 u1 6.0 4.5
# 3 u10 3.0 2.0
# 4 u100 4.5 7.5
# 5 u102 2.0 3.0
# 6 u103 9.0 7.5
# 7 u104 7.0 7.5
# 8 u105 4.5 7.5
# 9 u107 1.0 1.0
As you see rank()
creates golf-style ranks, where lower ranks higher. I ranked the inverse, which appears to give the result you request. Hope this helps.